2017-06-09 4 views
0

Hey ich versuche das eris-contracts Paket zu verwenden, um mit intelligenten Verträgen auf der monax Plattform zu interagieren.Methode nicht gefunden: erisdb.call

Die Verträge i benutzt hatte, in der eris Freigabe des blockchain gut zu funktionieren, aber wenn ich auf die neue Version aktualisiert monax, ich bin diese seltsamen Fehler bekommen:

Eris DB error: Call of method "call" with parameters { from: '424FF9990BD1AD02CB7294914986E27343E702EB', address: '723388A1EA103460561FA1758CE4BBCD8322F9F6', data: 'a5f3c23b00000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000016' } responded with "Method not found: erisdb.call".

Ich versuchte, eine wirklich machen einfacher Vertrag (mit einer Add-Methode) und versuchte, ihn aufzurufen. Aber wenn ich versuche, irgendeine Methode auf dem Vertrag anzurufen:

sumContract.add(34, 22, addCallback); 

function addCallback(error, sum){ 
    console.log(sum.toString()); // Would print: 56 
} 

Ich habe den obigen Fehler zurück.

Ich habe die Smart Contracts JS SDK auf der Website verfolgt, nur um sicher zu sein, dass es keine Syntaxänderungen gibt, wenn Dinge auf Monax aktualisiert.

Es sieht mit der Blockchain-Installation selbst nicht nach einem Fehler aus, da das Ausführen von epm.yaml das gewünschte Ergebnis liefert.

jobs: 

- name: deployAddContract 
    job: 
    deploy: 
     contract: AddContract.sol 

- name: queryStorage 
    job: 
    query-contract: 
     destination: $deployAddContract 
     data: add 5 6 

Hier ist der Vertragsanbahnung Code:

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); 

Hier sind die Versionen der verschiedenen Stücke:

  • Eris-Verträge: 0.15.12
  • monax: 0.16.0
  • Solidität: 0.40.0
  • Knoten: 8.1.0
  • npm: 5.0.3

Antwort

0

Gut Eris-Verträge so stellt sich heraus, trifft nicht auf neuere Versionen monax (glaube ich).

Es gibt eine neue npm-Bibliothek: @monax/legacy-contracts das wird den Trick machen. Ich verstehe nicht genau, warum die Eris-Verträge versagt, aber die Änderung der Abhängigkeit behebt die Dinge.

Verwandte Themen