public static BigInteger getTransactionValue(byte tokenType, byte[] receiver) { PbEntity.TokenType token = PbEntity.getStandardTokenType(); Transaction tx = ExecutionEngine.ScriptContainer as Transaction; TransactionOutput[] outputs = tx.GetOutputs(); BigInteger result = 0; foreach (TransactionOutput output in outputs) { byte[] scriptHash = output.ScriptHash; if (!scriptHash.Equals(receiver)) { continue; } byte[] assetid = output.AssetId; //Temperately only support NEO and GAS byte type = token.INVALID; if (assetid.Equals(NeoID)) { type = token.NEO; } else if (assetid.Equals(GasID)) { type = token.GAS; } if (tokenType != type) { continue; } result += output.Value; } return(result); }
public static object depositNEO(byte[] walletId) { BasicMethods.assert(BasicMethods._isByte32(walletId), "walletId is not byte32"); PbEntity.TokenType token = PbEntity.getStandardTokenType(); BigInteger value = LedgerStruct.getTransactionValue(token.NEO, ExecutionEngine.ExecutingScriptHash); BasicMethods.assert(value >= 0, "amount is less than zero"); _whenNotPaused(); BasicMethods.assert(_updateBalance(walletId, LedgerStruct.NeoAddress, value, getStandardMathOperation().add), "updateBalance failed"); DepositToWallet(walletId, LedgerStruct.NeoAddress, value); return(true); }