Skip to content
This repository has been archived by the owner on Jun 23, 2020. It is now read-only.

Commit

Permalink
Merge pull request #95 from nearprotocol/token-contract-numbers
Browse files Browse the repository at this point in the history
Use u64 in token contract
  • Loading branch information
vgrichina committed Mar 12, 2019
2 parents 261515e + ba9b7a8 commit 27f4b9d
Showing 1 changed file with 18 additions and 20 deletions.
38 changes: 18 additions & 20 deletions templates/token_contract_ts/assembly/main.ts
Expand Up @@ -25,49 +25,47 @@ export function totalSupply(): string {
return TOTAL_SUPPLY.toString();
}

export function balanceOf(tokenOwner: string): string {
export function balanceOf(tokenOwner: string): u64 {
let ownerKey = balanceKey(tokenOwner);
near.log("balanceOf: " + tokenOwner);
let result = globalStorage.getItem(ownerKey) || "0";
near.log("result: " + result);
let result = globalStorage.getU64(ownerKey);
near.log("result: " + result.toString());
return result;
}

export function allowance(tokenOwner: string, spender: string): string {
export function allowance(tokenOwner: string, spender: string): u64 {
let spenderKey = approvedKey(tokenOwner, spender);
return globalStorage.getItem(spenderKey);
return globalStorage.getU64(spenderKey);
}

export function transfer(to: string, tokens: string): boolean {
near.log("transfer: " + to + " tokens: " + tokens);
export function transfer(to: string, tokens: u64): boolean {
near.log("transfer: " + to + " tokens: " + tokens.toString());
let fromKey = balanceKey(contractContext.sender);
let toKey = balanceKey(to);
let tokensNum = U64.parseInt(tokens);
near.log("from: " + fromKey + " to: " + toKey);
let fromAmount = globalStorage.getU64(fromKey);
assert(fromAmount >= tokensNum, "not enough tokens on account");
globalStorage.setU64(fromKey, fromAmount - tokensNum);
globalStorage.setU64(toKey, globalStorage.getU64(toKey) + tokensNum);
assert(fromAmount >= tokens, "not enough tokens on account");
globalStorage.setU64(fromKey, fromAmount - tokens);
globalStorage.setU64(toKey, globalStorage.getU64(toKey) + tokens);
return true;
}

export function approve(spender: string, tokens: string): boolean {
export function approve(spender: string, tokens: u64): boolean {
let spenderKey = approvedKey(contractContext.sender, spender);
globalStorage.setU64(spenderKey, U64.parseInt(tokens));
globalStorage.setU64(spenderKey, tokens);
return true;
}

export function transferFrom(from: string, to: string, tokens: string): boolean {
export function transferFrom(from: string, to: string, tokens: u64): boolean {
let fromKey = balanceKey(from);
let toKey = balanceKey(to);
let spenderKey = approvedKey(contractContext.sender, to);
let tokensNum = U64.parseInt(tokens);
let fromAmount = globalStorage.getU64(fromKey);
assert(fromAmount >= tokensNum, "not enough tokens on account");
globalStorage.setU64(fromKey, fromAmount - tokensNum);
assert(fromAmount >= tokens, "not enough tokens on account");
globalStorage.setU64(fromKey, fromAmount - tokens);
let approvedAmount = globalStorage.getU64(spenderKey)
assert(fromAmount >= tokensNum, "not enough tokens approved");
globalStorage.setU64(spenderKey, approvedAmount - tokensNum);
globalStorage.setU64(toKey, globalStorage.getU64(toKey) + tokensNum);
assert(fromAmount >= tokens, "not enough tokens approved");
globalStorage.setU64(spenderKey, approvedAmount - tokens);
globalStorage.setU64(toKey, globalStorage.getU64(toKey) + tokens);
return true;
}

0 comments on commit 27f4b9d

Please sign in to comment.