Позвоните в Web3 и заключите контракт с RST json RPC - PullRequest
0 голосов
/ 04 февраля 2020

Я использую 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()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...