public static Transaction MintTokens(NEP5 token, KeyPair buyer_key, string symbol, decimal amount) { var attachs = new List <Transaction.Output>(); attachs.Add(new Transaction.Output() { assetID = CronAPI.GetAssetID(symbol), scriptHash = token.ScriptHash, value = amount }); var response = token.api.CallContract(buyer_key, token.ScriptHash, "mintTokens", new object[] { }, symbol, attachs); return(response); }
public Transaction ClaimGas(KeyPair ownerKey) { var targetScriptHash = new UInt160(ownerKey.address.AddressToScriptHash()); decimal amount; var claimable = GetClaimable(targetScriptHash, out amount); var references = new List <Transaction.Input>(); foreach (var entry in claimable) { references.Add(new Transaction.Input() { prevHash = entry.hash, prevIndex = entry.index }); } if (amount <= 0) { throw new ArgumentException("No GAS to claim at this address"); } List <Transaction.Input> inputs; List <Transaction.Output> outputs; GenerateInputsOutputs(ownerKey, "CRON", null, out inputs, out outputs); outputs.Add( new Transaction.Output() { scriptHash = targetScriptHash, assetID = CronAPI.GetAssetID("CRON"), value = amount }); Transaction tx = new Transaction() { type = TransactionType.ClaimTransaction, version = 0, script = null, gas = -1, claimReferences = references.ToArray(), inputs = inputs.ToArray(), outputs = outputs.ToArray(), }; tx.Sign(ownerKey); var ok = SendTransaction(tx); return(ok ? tx : null); }
protected override void Reset() { base.Reset(); foreach (var entry in CronAPI.Assets) { var symbol = entry.Key; var assetID = CronAPI.GetAssetID(symbol); _assetMap[assetID] = new Asset() { hash = new UInt256(assetID), name = symbol }; } }
// claim from contract, without having private key public Transaction ClaimGas(KeyPair ownerKey, UInt160 fromScripthash, byte[] verificationScript) { var check = verificationScript.ToScriptHash(); if (check != fromScripthash) { throw new ArgumentException("Invalid verification script"); } decimal amount; var claimable = GetClaimable(fromScripthash, out amount); var references = new List <Transaction.Input>(); foreach (var entry in claimable) { references.Add(new Transaction.Input() { prevHash = entry.hash, prevIndex = entry.index }); } if (amount <= 0) { throw new ArgumentException("No GAS to claim at this address"); } List <Transaction.Input> inputs; List <Transaction.Output> outputs; GenerateInputsOutputs(ownerKey, "CRON", null, out inputs, out outputs); outputs.Add( new Transaction.Output() { scriptHash = fromScripthash, assetID = CronAPI.GetAssetID("CRON"), value = amount }); Transaction tx = new Transaction() { type = TransactionType.ClaimTransaction, version = 0, script = null, gas = -1, claimReferences = references.ToArray(), inputs = inputs.ToArray(), outputs = outputs.ToArray(), }; var witness = new Witness { invocationScript = ("0014" + ownerKey.address.AddressToScriptHash().ByteToHex()).HexToBytes(), verificationScript = verificationScript }; tx.Sign(ownerKey, new Witness[] { witness }); var ok = SendTransaction(tx); return(ok ? tx : null); }