diff --git a/src/RpcClient/RpcClient.cs b/src/RpcClient/RpcClient.cs index 6d81f9b86..32442ba98 100644 --- a/src/RpcClient/RpcClient.cs +++ b/src/RpcClient/RpcClient.cs @@ -359,7 +359,7 @@ public async Task InvokeFunctionAsync(string scriptHash, string /// public async Task InvokeScriptAsync(byte[] script, params Signer[] signers) { - List parameters = new List { script.ToHexString() }; + List parameters = new List { Convert.ToBase64String(script) }; if (signers.Length > 0) { parameters.Add(signers.Select(p => p.ToJson()).ToArray()); diff --git a/src/RpcServer/RpcServer.SmartContract.cs b/src/RpcServer/RpcServer.SmartContract.cs index 2acec7012..2cc910851 100644 --- a/src/RpcServer/RpcServer.SmartContract.cs +++ b/src/RpcServer/RpcServer.SmartContract.cs @@ -65,7 +65,7 @@ private JObject GetInvokeResult(byte[] script, UInt160 sender = null, Signers si { using ApplicationEngine engine = ApplicationEngine.Run(script, container: signers, gas: settings.MaxGasInvoke); JObject json = new JObject(); - json["script"] = script.ToHexString(); + json["script"] = Convert.ToBase64String(script); json["state"] = engine.State; json["gasconsumed"] = engine.GasConsumed.ToString(); try @@ -116,7 +116,7 @@ protected virtual JObject InvokeFunction(JArray _params) [RpcMethod] protected virtual JObject InvokeScript(JArray _params) { - byte[] script = _params[0].AsString().HexToBytes(); + byte[] script = Convert.FromBase64String(_params[0].AsString()); UInt160 sender = _params.Count >= 2 ? AddressToScriptHash(_params[1].AsString()) : null; Signers signers = _params.Count >= 3 ? SignersFromJson((JArray)_params[2]) : null; return GetInvokeResult(script, sender, signers); diff --git a/src/RpcServer/RpcServer.Wallet.cs b/src/RpcServer/RpcServer.Wallet.cs index 021893d5a..21e07d0d8 100644 --- a/src/RpcServer/RpcServer.Wallet.cs +++ b/src/RpcServer/RpcServer.Wallet.cs @@ -182,7 +182,7 @@ private void ProcessInvokeWithWallet(JObject result, UInt160 sender = null, Sign if (witnessSigners.Count() > 0) { - tx = wallet.MakeTransaction(result["script"].AsString().HexToBytes(), sender, witnessSigners); + tx = wallet.MakeTransaction(Convert.FromBase64String(result["script"].AsString()), sender, witnessSigners); ContractParametersContext context = new ContractParametersContext(tx); wallet.Sign(context); if (context.Completed) diff --git a/tests/Neo.Network.RPC.Tests/RpcTestCases.json b/tests/Neo.Network.RPC.Tests/RpcTestCases.json index e3f03d4df..6c89e441f 100644 --- a/tests/Neo.Network.RPC.Tests/RpcTestCases.json +++ b/tests/Neo.Network.RPC.Tests/RpcTestCases.json @@ -747,14 +747,14 @@ "Request": { "jsonrpc": "2.0", "method": "invokescript", - "params": [ "10c30c046e616d650c143b7d3711c6f0ccf9b1dca903d1bfa1d896f1238c41627d5b5210c30c0673796d626f6c0c143b7d3711c6f0ccf9b1dca903d1bfa1d896f1238c41627d5b5210c30c08646563696d616c730c143b7d3711c6f0ccf9b1dca903d1bfa1d896f1238c41627d5b5210c30c0b746f74616c537570706c790c143b7d3711c6f0ccf9b1dca903d1bfa1d896f1238c41627d5b52" ], + "params": [ "EMMMBG5hbWUMFDt9NxHG8Mz5sdypA9G/odiW8SOMQWJ9W1IQwwwGc3ltYm9sDBQ7fTcRxvDM+bHcqQPRv6HYlvEjjEFifVtSEMMMCGRlY2ltYWxzDBQ7fTcRxvDM+bHcqQPRv6HYlvEjjEFifVtSEMMMC3RvdGFsU3VwcGx5DBQ7fTcRxvDM+bHcqQPRv6HYlvEjjEFifVtS" ], "id": 1 }, "Response": { "jsonrpc": "2.0", "id": 1, "result": { - "script": "10c30c046e616d650c143b7d3711c6f0ccf9b1dca903d1bfa1d896f1238c41627d5b5210c30c0673796d626f6c0c143b7d3711c6f0ccf9b1dca903d1bfa1d896f1238c41627d5b5210c30c08646563696d616c730c143b7d3711c6f0ccf9b1dca903d1bfa1d896f1238c41627d5b5210c30c0b746f74616c537570706c790c143b7d3711c6f0ccf9b1dca903d1bfa1d896f1238c41627d5b52", + "script": "EMMMBG5hbWUMFDt9NxHG8Mz5sdypA9G/odiW8SOMQWJ9W1IQwwwGc3ltYm9sDBQ7fTcRxvDM+bHcqQPRv6HYlvEjjEFifVtSEMMMCGRlY2ltYWxzDBQ7fTcRxvDM+bHcqQPRv6HYlvEjjEFifVtSEMMMC3RvdGFsU3VwcGx5DBQ7fTcRxvDM+bHcqQPRv6HYlvEjjEFifVtS", "state": "HALT", "gasconsumed": "5061560", "stack": [ @@ -933,14 +933,14 @@ "Request": { "jsonrpc": "2.0", "method": "invokescript", - "params": [ "10c30c08646563696d616c730c143b7d3711c6f0ccf9b1dca903d1bfa1d896f1238c41627d5b52" ], + "params": [ "EMMMCGRlY2ltYWxzDBQ7fTcRxvDM+bHcqQPRv6HYlvEjjEFifVtS" ], "id": 1 }, "Response": { "jsonrpc": "2.0", "id": 1, "result": { - "script": "10c30c08646563696d616c730c143b7d3711c6f0ccf9b1dca903d1bfa1d896f1238c41627d5b52", + "script": "EMMMCGRlY2ltYWxzDBQ7fTcRxvDM+bHcqQPRv6HYlvEjjEFifVtS", "state": "HALT", "gasconsumed": "5061560", "stack": [ diff --git a/tests/Neo.Network.RPC.Tests/UT_RpcClient.cs b/tests/Neo.Network.RPC.Tests/UT_RpcClient.cs index dd08d6024..bc95c6beb 100644 --- a/tests/Neo.Network.RPC.Tests/UT_RpcClient.cs +++ b/tests/Neo.Network.RPC.Tests/UT_RpcClient.cs @@ -283,7 +283,7 @@ public async Task TestInvokeFunction() public async Task TestInvokeScript() { var test = TestUtils.RpcTestCases.Find(p => p.Name == nameof(rpc.InvokeScriptAsync).ToLower()); - var result = await rpc.InvokeScriptAsync(test.Request.Params[0].AsString().HexToBytes()); + var result = await rpc.InvokeScriptAsync(Convert.FromBase64String(test.Request.Params[0].AsString())); Assert.AreEqual(test.Response.Result.ToString(), result.ToJson().ToString()); } diff --git a/tests/Neo.Network.RPC.Tests/UT_TransactionManager.cs b/tests/Neo.Network.RPC.Tests/UT_TransactionManager.cs index c5d8a1d4b..32744c2e2 100644 --- a/tests/Neo.Network.RPC.Tests/UT_TransactionManager.cs +++ b/tests/Neo.Network.RPC.Tests/UT_TransactionManager.cs @@ -10,7 +10,6 @@ using Neo.SmartContract.Native; using Neo.VM; using Neo.Wallets; -using Neo.Wallets.NEP6; using System; using System.Linq; using System.Numerics; @@ -112,11 +111,11 @@ public static void MockInvokeScript(Mock mockClient, byte[] script, p { Stack = parameters.Select(p => p.ToStackItem()).ToArray(), GasConsumed = "100", - Script = script.ToHexString(), + Script = Convert.ToBase64String(script), State = VMState.HALT }; - mockClient.Setup(p => p.RpcSendAsync("invokescript", It.Is(j => j[0].AsString() == script.ToHexString()))) + mockClient.Setup(p => p.RpcSendAsync("invokescript", It.Is(j => j[0].AsString() == Convert.ToBase64String(script)))) .ReturnsAsync(result.ToJson()) .Verifiable(); }