未找到方法:erisdb.call
Method not found: erisdb.call
嘿,我正在尝试使用 eris-contracts
包与 monax 平台上的智能合约进行交互。
我以前使用的合约在区块链的 eris 版本中运行良好,但是当我更新到新的 monax 版本时,我收到了这个奇怪的错误:
Eris DB error: Call of method "call" with parameters { from: '424FF9990BD1AD02CB7294914986E27343E702EB',
address: '723388A1EA103460561FA1758CE4BBCD8322F9F6',
data: 'a5f3c23b00000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000016' } responded with "Method not found: erisdb.call".
我尝试制作一个非常简单的合同(使用添加方法)并尝试调用它。但是每当我尝试调用合约上的任何方法时:
sumContract.add(34, 22, addCallback);
function addCallback(error, sum){
console.log(sum.toString()); // Would print: 56
}
我找回了上面的错误。
我一直在关注站点上的 Smart Contracts JS SDK,只是为了确保在升级到 monax 时没有语法变化。
区块链安装本身看起来没有任何问题,因为 运行 epm.yaml 确实给出了预期的结果。
jobs:
- name: deployAddContract
job:
deploy:
contract: AddContract.sol
- name: queryStorage
job:
query-contract:
destination: $deployAddContract
data: add 5 6
合约启动代码如下:
var fs = require('fs');
var erisC = require('eris-contracts');
var erisdbURL = "http://localhost:1337/rpc";
var contractData = require('./jobs_output.json');
var contractAddress = contractData["deployAddContract"];
var contractAbi = JSON.parse(fs.readFileSync("./abi/" + contractAddress));
var contractsManager = erisC.newContractManagerDev(erisdbURL, {
"address": "424FF9990BD1AD02CB7294914986E27343E702EB",
"pubKey": "97AE5615D4C6CB3C5F949B1EFC3F6B841EBF4BE4069A942F02D9CF654614D3D6",
"privKey": "FD5C9BAA698FF3B13B94B2F9CCCB74DDD62257D787839A57B70EDD32E59B467497AE5615D4C6CB3C5F949B1EFC3F6B841EBF4BE4069A942F02D9CF654614D3D6"
});
var sumContract = contractsManager.newContractFactory(contractAbi).at(contractAddress);
以下是不同版本的版本:
- eris 合同:0.15.12
- 莫纳克斯:0.16.0
- 坚固度:0.40.0
- 节点:8.1.0
- npm : 5.0.3
好吧,原来 eris-contracts 不适用于较新的 monax 版本(我认为)。
有一个新的 npm 库:@monax/legacy-contracts 可以解决问题。
我不明白为什么 eris-contracts 失败了,但是改变依赖关系可以解决问题。
嘿,我正在尝试使用 eris-contracts
包与 monax 平台上的智能合约进行交互。
我以前使用的合约在区块链的 eris 版本中运行良好,但是当我更新到新的 monax 版本时,我收到了这个奇怪的错误:
Eris DB error: Call of method "call" with parameters { from: '424FF9990BD1AD02CB7294914986E27343E702EB', address: '723388A1EA103460561FA1758CE4BBCD8322F9F6', data: 'a5f3c23b00000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000016' } responded with "Method not found: erisdb.call".
我尝试制作一个非常简单的合同(使用添加方法)并尝试调用它。但是每当我尝试调用合约上的任何方法时:
sumContract.add(34, 22, addCallback);
function addCallback(error, sum){
console.log(sum.toString()); // Would print: 56
}
我找回了上面的错误。
我一直在关注站点上的 Smart Contracts JS SDK,只是为了确保在升级到 monax 时没有语法变化。
区块链安装本身看起来没有任何问题,因为 运行 epm.yaml 确实给出了预期的结果。
jobs:
- name: deployAddContract
job:
deploy:
contract: AddContract.sol
- name: queryStorage
job:
query-contract:
destination: $deployAddContract
data: add 5 6
合约启动代码如下:
var fs = require('fs');
var erisC = require('eris-contracts');
var erisdbURL = "http://localhost:1337/rpc";
var contractData = require('./jobs_output.json');
var contractAddress = contractData["deployAddContract"];
var contractAbi = JSON.parse(fs.readFileSync("./abi/" + contractAddress));
var contractsManager = erisC.newContractManagerDev(erisdbURL, {
"address": "424FF9990BD1AD02CB7294914986E27343E702EB",
"pubKey": "97AE5615D4C6CB3C5F949B1EFC3F6B841EBF4BE4069A942F02D9CF654614D3D6",
"privKey": "FD5C9BAA698FF3B13B94B2F9CCCB74DDD62257D787839A57B70EDD32E59B467497AE5615D4C6CB3C5F949B1EFC3F6B841EBF4BE4069A942F02D9CF654614D3D6"
});
var sumContract = contractsManager.newContractFactory(contractAbi).at(contractAddress);
以下是不同版本的版本:
- eris 合同:0.15.12
- 莫纳克斯:0.16.0
- 坚固度:0.40.0
- 节点:8.1.0
- npm : 5.0.3
好吧,原来 eris-contracts 不适用于较新的 monax 版本(我认为)。
有一个新的 npm 库:@monax/legacy-contracts 可以解决问题。 我不明白为什么 eris-contracts 失败了,但是改变依赖关系可以解决问题。