Я использую web3, через который я хочу вызвать два метода RP C, которые написаны на ржавчине, как показано ниже. Я пытаюсь создать метод RP C в ржавчине и вызываю метод ржавчины RP C через web3. Я новичок в ржавчине. Я использую JSON -core пример для создания моих методов RP C в ржавчине. Всякий раз, когда я пытаюсь вызвать развернутый метод RP C из web3 для ржавчины, я получаю сообщение об ошибке. Сначала Web3 вызывает eth_gasPrice для проверки цены на газ, но главная проблема здесь в том, что у меня есть метод ржавчины, называемый eth_gasPrice, но он не затрагивает этот метод. Было бы очень полезно, если бы я получил помощь.
Ошибка: возвращенная ошибка: ошибка разбора.
var Web3 = require("web3");
var fs = require("fs");
var request = require('request');
var stringify = require('json-stringify-safe');
// Connect to our local node
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:3030"));
// NOTE: if you run Kovan node there should be an address you've got in the "Option 2: Run Kovan node" step
web3.eth.defaultAccount = "0x004ec07d2329997267ec62b4166639513386f32e";
// read JSON ABI
var abi = JSON.parse(fs.readFileSync("./erc-20/target/json/TokenInterface.json"));
// convert Wasm binary to hex format
var codeHex = '0x' + fs.readFileSync("/erc-20/target/erc20.wasm").toString('hex');
var TokenContract = new web3.eth.Contract(abi, { data: codeHex, from: web3.eth.defaultAccount });
var TokenDeployTransaction = TokenContract.deploy({ data: codeHex, arguments: [10000000] });
//Will create TokenContract with `totalSupply` = 10000000 and print a result
TokenDeployTransaction.send(
{ gasLimit: 5000000, from: web3.eth.defaultAccount }).then(contract => {
console.log("Address of new contract: " + contract.options.address);
TokenContract = contract;
}).catch(err => console.log(err));
Rust- json RP C
use jsonrpc_http_server::jsonrpc_core::{IoHandler, Params, Value};
use jsonrpc_core as rpc;
use jsonrpc_http_server as http;
pub fn init_rpc() {
let mut io = rpc::IoHandler::new();
io.add_method("eth_gasPrice", |_params: rpc::Params| {
Ok(rpc::Value::String("hello".to_string()))
});
io.add_method("eth_sendTransaction", |_params: rpc::Params| {
Ok(Value::String("hello".into()))
});
let address = "127.0.0.1:3030".parse().expect("Valid address given");
let server = http::ServerBuilder::new(io)
.threads(3)
.start_http(&address)
.expect("Server should start");
server.wait()
}