Esempio n. 1
0
        public JObject InvokeScript(byte[] script, UInt160[] scriptHashesForVerifying)
        {
            CheckWitnessHashes checkWitnessHashes = null;

            checkWitnessHashes = new CheckWitnessHashes(scriptHashesForVerifying);
            return(GetInvokeResult(script, checkWitnessHashes));
        }
Esempio n. 2
0
        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)));
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        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");
            }
        }
Esempio n. 7
0
        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");
            }
        }