public JObject InvokeScript(byte[] script, UInt160[] scriptHashesForVerifying) { CheckWitnessHashes checkWitnessHashes = null; checkWitnessHashes = new CheckWitnessHashes(scriptHashesForVerifying); return(GetInvokeResult(script, checkWitnessHashes)); }
private JObject InvokeScript(JArray _params) { byte[] script = _params[0].AsString().HexToBytes(); CheckWitnessHashes checkWitnessHashes = _params.Count >= 2 ? new CheckWitnessHashes(((JArray)_params[1]).Select(u => UInt160.Parse(u.AsString())).ToArray()) : null; return(GetInvokeResult(script, checkWitnessHashes)); }
private JObject InvokeScript(JArray _params) { byte[] script = _params[0].AsString().HexToBytes(); CheckWitnessHashes checkWitnessHashes = null; if (_params.Count > 1) { UInt160[] scriptHashesForVerifying = _params.Skip(1).Select(u => UInt160.Parse(u.AsString())).ToArray(); checkWitnessHashes = new CheckWitnessHashes(scriptHashesForVerifying); } return(GetInvokeResult(script, checkWitnessHashes)); }
public IActionResult InvokeScript(InvokeScriptParameter param) { byte[] script = param.Script.HexToBytes(); CheckWitnessHashes checkWitnessHashes = null; if (param.Hashes != null && param.Hashes.Length > 0) { UInt160[] scriptHashesForVerifying = param.Hashes.Select(u => UInt160.Parse(u)).ToArray();; checkWitnessHashes = new CheckWitnessHashes(scriptHashesForVerifying); } return(FormatJson(GetInvokeResult(script, checkWitnessHashes))); }
private JObject InvokeFunction(JArray _params) { UInt160 script_hash = UInt160.Parse(_params[0].AsString()); string operation = _params[1].AsString(); ContractParameter[] args = _params.Count >= 3 ? ((JArray)_params[2]).Select(p => ContractParameter.FromJson(p)).ToArray() : new ContractParameter[0]; CheckWitnessHashes checkWitnessHashes = _params.Count >= 4 ? new CheckWitnessHashes(((JArray)_params[3]).Select(u => UInt160.Parse(u.AsString())).ToArray()) : null; byte[] script; using (ScriptBuilder sb = new ScriptBuilder()) { script = sb.EmitAppCall(script_hash, operation, args).ToArray(); } return(GetInvokeResult(script, checkWitnessHashes)); }
private JObject Process(string method, JArray _params) { switch (method) { case "getbestblockhash": { return(GetBestBlockHash()); } case "getblock": { JObject key = _params[0]; bool verbose = _params.Count >= 2 && _params[1].AsBoolean(); return(GetBlock(key, verbose)); } case "getblockcount": { return(GetBlockCount()); } case "getblockhash": { uint height = uint.Parse(_params[0].AsString()); return(GetBlockHash(height)); } case "getblockheader": { JObject key = _params[0]; bool verbose = _params.Count >= 2 && _params[1].AsBoolean(); return(GetBlockHeader(key, verbose)); } case "getblocksysfee": { uint height = uint.Parse(_params[0].AsString()); return(GetBlockSysFee(height)); } case "getconnectioncount": { return(GetConnectionCount()); } case "getcontractstate": { UInt160 script_hash = UInt160.Parse(_params[0].AsString()); return(GetContractState(script_hash)); } case "getpeers": { return(GetPeers()); } case "getrawmempool": { bool shouldGetUnverified = _params.Count >= 1 && _params[0].AsBoolean(); return(GetRawMemPool(shouldGetUnverified)); } case "getrawtransaction": { UInt256 hash = UInt256.Parse(_params[0].AsString()); bool verbose = _params.Count >= 2 && _params[1].AsBoolean(); return(GetRawTransaction(hash, verbose)); } case "getstorage": { UInt160 script_hash = UInt160.Parse(_params[0].AsString()); byte[] key = _params[1].AsString().HexToBytes(); return(GetStorage(script_hash, key)); } case "gettransactionheight": { UInt256 hash = UInt256.Parse(_params[0].AsString()); return(GetTransactionHeight(hash)); } case "getvalidators": { return(GetValidators()); } case "getversion": { return(GetVersion()); } case "invokefunction": { UInt160 script_hash = UInt160.Parse(_params[0].AsString()); string operation = _params[1].AsString(); ContractParameter[] args = _params.Count >= 3 ? ((JArray)_params[2]).Select(p => ContractParameter.FromJson(p)).ToArray() : new ContractParameter[0]; return(InvokeFunction(script_hash, operation, args)); } case "invokescript": { byte[] script = _params[0].AsString().HexToBytes(); CheckWitnessHashes checkWitnessHashes = null; if (_params.Count > 1) { UInt160[] scriptHashesForVerifying = _params.Skip(1).Select(u => UInt160.Parse(u.AsString())).ToArray(); checkWitnessHashes = new CheckWitnessHashes(scriptHashesForVerifying); } return(GetInvokeResult(script, checkWitnessHashes)); } case "listplugins": { return(ListPlugins()); } case "sendrawtransaction": { Transaction tx = _params[0].AsString().HexToBytes().AsSerializable <Transaction>(); return(SendRawTransaction(tx)); } case "submitblock": { Block block = _params[0].AsString().HexToBytes().AsSerializable <Block>(); return(SubmitBlock(block)); } case "validateaddress": { string address = _params[0].AsString(); return(ValidateAddress(address)); } default: throw new RpcException(-32601, "Method not found"); } }
private JObject Process(string method, JArray _params) { switch (method) { case "getaccountstate": { UInt160 script_hash = _params[0].AsString().ToScriptHash(); return(GetAccountState(script_hash)); } case "getassetstate": { UInt256 asset_id = UInt256.Parse(_params[0].AsString()); return(GetAssetState(asset_id)); } case "getbestblockhash": { return(GetBestBlockHash()); } case "getblock": { JObject key = _params[0]; bool verbose = _params.Count >= 2 && _params[1].AsBoolean(); return(GetBlock(key, verbose)); } case "getblockcount": { return(GetBlockCount()); } case "getblockhash": { uint height = uint.Parse(_params[0].AsString()); return(GetBlockHash(height)); } case "getblockheader": { JObject key = _params[0]; bool verbose = _params.Count >= 2 && _params[1].AsBoolean(); return(GetBlockHeader(key, verbose)); } case "getblocksysfee": { uint height = uint.Parse(_params[0].AsString()); return(GetBlockSysFee(height)); } case "getconnectioncount": { return(GetConnectionCount()); } case "getcontractstate": { UInt160 script_hash = UInt160.Parse(_params[0].AsString()); return(GetContractState(script_hash)); } case "getpeers": { return(GetPeers()); } case "getrawmempool": { bool shouldGetUnverified = _params.Count >= 1 && _params[0].AsBoolean(); return(GetRawMemPool(shouldGetUnverified)); } case "getrawtransaction": { UInt256 hash = UInt256.Parse(_params[0].AsString()); bool verbose = _params.Count >= 2 && _params[1].AsBoolean(); return(GetRawTransaction(hash, verbose)); } case "getstorage": { UInt160 script_hash = UInt160.Parse(_params[0].AsString()); byte[] key = _params[1].AsString().HexToBytes(); return(GetStorage(script_hash, key)); } case "gettransactionheight": { UInt256 hash = UInt256.Parse(_params[0].AsString()); return(GetTransactionHeight(hash)); } case "gettxout": { UInt256 hash = UInt256.Parse(_params[0].AsString()); ushort index = ushort.Parse(_params[1].AsString()); return(GetTxOut(hash, index)); } case "getvalidators": { return(GetValidators()); } case "getversion": { return(GetVersion()); } case "invoke": { UInt160 script_hash = UInt160.Parse(_params[0].AsString()); ContractParameter[] parameters = ((JArray)_params[1]).Select(p => ContractParameter.FromJson(p)).ToArray(); CheckWitnessHashes checkWitnessHashes = null; if (_params.Count > 2) { UInt160[] scriptHashesForVerifying = _params.Skip(2).Select(u => UInt160.Parse(u.AsString())).ToArray(); checkWitnessHashes = new CheckWitnessHashes(scriptHashesForVerifying); } return(Invoke(script_hash, parameters, checkWitnessHashes)); } case "invokefunction": { UInt160 script_hash = UInt160.Parse(_params[0].AsString()); string operation = _params[1].AsString(); ContractParameter[] args = _params.Count >= 3 ? ((JArray)_params[2]).Select(p => ContractParameter.FromJson(p)).ToArray() : new ContractParameter[0]; CheckWitnessHashes checkWitnessHashes = null; if (_params.Count > 3) { UInt160[] scriptHashesForVerifying = _params.Skip(3).Select(u => UInt160.Parse(u.AsString())).ToArray(); checkWitnessHashes = new CheckWitnessHashes(scriptHashesForVerifying); } return(InvokeFunction(script_hash, operation, args, checkWitnessHashes)); } case "invokescript": { byte[] script = _params[0].AsString().HexToBytes(); CheckWitnessHashes checkWitnessHashes = null; if (_params.Count > 1) { UInt160[] scriptHashesForVerifying = _params.Skip(1).Select(u => UInt160.Parse(u.AsString())).ToArray(); checkWitnessHashes = new CheckWitnessHashes(scriptHashesForVerifying); } return(InvokeScript(script, checkWitnessHashes)); } case "listplugins": { return(ListPlugins()); } case "sendrawtransaction": { Transaction tx = Transaction.DeserializeFrom(_params[0].AsString().HexToBytes()); return(SendRawTransaction(tx)); } case "submitblock": { Block block = _params[0].AsString().HexToBytes().AsSerializable <Block>(); return(SubmitBlock(block)); } case "validateaddress": { string address = _params[0].AsString(); return(ValidateAddress(address)); } case "getstateheight": { return(GetStateHeight()); } case "getstateroot": { JObject param = _params[0]; return(GetStateRoot(param)); } case "getproof": { UInt256 state_root = UInt256.Parse(_params[0].AsString()); UInt160 script_hash = UInt160.Parse(_params[1].AsString()); byte[] store_key = _params[2].AsString().HexToBytes(); return(GetStateProof(state_root, script_hash, store_key)); } case "verifyproof": { UInt256 state_root = UInt256.Parse(_params[0].AsString()); byte[] proof_bytes = _params[1].AsString().HexToBytes(); return(VerifyProof(state_root, proof_bytes)); } case "getminimumnetworkfee": { return(GetMinimumNetworkFee()); } default: throw new RpcException(-32601, "Method not found"); } }