Как сделать API для смарт-контракта Ethereum в Node.js? Может ли кто-нибудь отправить хорошие примеры? Является ли это вообще стандартным способом создания API в Node.js, чтобы он мог взаимодействовать с любым интерфейсом, потому что большинство примеров, которые я могу найти, работают только из внешнего интерфейса? Я сделал код с помощью web3, показывает ожидаемый результат, но ничего не фиксирует в новом блоке, как это происходит с трюфелем. Мой код-
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
console.log("Talking with a geth server", web3.version.api);
function test(){
var sourceCode = fs.readFileSync('contracts/digitalToken.sol','utf8')
var compiled = solc.compile(sourceCode);
console.log(compiled.contracts[":digitalToken"]);
var abiArray = compiled.contracts[":digitalToken"].interface;
abiArray = JSON.parse(abiArray);
var MyContract = web3.eth.contract(abiArray);
var address = "0x1f81b5fa31d049b70556628cc01f22d362c41084";
var contractInstance = MyContract.at(address);
console.log(contractInstance);
var value=executeAddvid(contractInstance)
console.log({message: "Success",value:value});
console.log('after passing--');
console.log({message: "Success",value:value});
var value1=readVidByUser(contractInstance);
console.log({message: "Success",value:value1});
console.log('after passing--');
console.log({message: "Success",value:value1});
}
function executeAddvid(contractInstance){
record = contractInstance;
return record.addVid.call('0x0000000000000000000000000000000000000124',5,"ronaldo","0xc9f5a0572d95d5dea1331edcc192dacef51ecbb7",1000000000000000000);
}
function readVidByUser(contractInstance){
record = contractInstance;
return record.readVidByUser.call('0x0000000000000000000000000000000000000124','0x1f81b5fa31d049b70556628cc01f22d362c41084');
}
test();
Совсем недавно мы создали API в node.js. Вы можете взглянуть на это репо для справки -
https://github.com/Imaginea/lms/blob/master/server/routes.js
Пользовательский интерфейс взаимодействует с промежуточным ПО node.js, а затем промежуточное ПО взаимодействует с узлом Ethereum.
По сути, вам придется использовать библиотеку Web3JS для ее реализации, пожалуйста, проверьте код для получения более подробной информации.
Надеюсь это поможет.
Ознакомьтесь с модулем web3 npm. Все есть.
Проблема заключалась в том, что я добавил функциональность .call для вызова каждой функции смарт-контракта, когда она нужна только для постоянной функции, которая используется только для чтения значений. Спасибо за поддержку.
Шубхабрата Мукерджи
Санчит
Шубхабрата Мукерджи
Санчит
Шубхабрата Мукерджи
Шубхабрата Мукерджи
Шубхабрата Мукерджи
Санчит