Kann ich Web3.js verwenden, um Smart Contracts mit einem lokalen TestRPC-Client bereitzustellen und darauf zuzugreifen?

Ich bin an dem Punkt angelangt, an dem ich meinen Smart Contract auf eine lokale Kopie des TestRPC-Testclients migriert habe.

1) Kann ich mit einer Node.JS-App, die auf demselben PC wie der TestRPC-Testclient ausgeführt wird, die Funktion deploy() verwenden, um eine neue Instanz meines Smart Contracts für den lokal ausgeführten TestRPC-Client bereitzustellen? Oder geht das nur mit einem Testnetz wie Rinkeby etc. oder dem Ethereum-Hauptnetz als Deploy-Target?

2) Dieselbe Frage, aber für den Zugriff auf Smart Contracts über die Web3.js-Bibliothek. Kann ich diese Bibliothek verwenden, um mit der Smart-Contract-Instanz zu interagieren, die im lokalen TestRPC-Client von einer Node.js-App ausgeführt wird, die auf demselben PC ausgeführt wird.

viewWenn jemand Links zu guten Beispielen hat, die zeigen, wie ein Smart Contract migriert/bereitgestellt und über eine Node.JS-App mit der Web3.js-Bibliothek auf die Funktionen des Smart Contracts zugegriffen wird , teilen Sie dies bitte.

Antworten (2)

Ich würde in die Dokumentation zur Verwendung des Truffle Framework schauen. Es ermöglicht Ihnen die Bereitstellung und Interaktion mit Ihren Smart Contracts auf TESTRPC oder Rinkeby.

Um Ihre zweite Frage zu beantworten, hier ein Beispiel:

contract("MyContractTest", () => {
    let FACTOR = 5;

    let myContract;
    before(async () => {
        myContract = await artifacts.require("MyContract.sol").new(FACTOR);
    });

    describe(`my test:`, async () => {
        for (let i = 0; i < 100; i++) {
            it(`func(${i})`, async () => {
                try {
                    let expected = i * FACTOR;
                    let actual   = await myContract.func(i);
                    assert(actual.equals(expected), `expected ${expected} but got ${actual}`);
                }
                catch (error) {
                    assert(false, error.message);
                }
            });
        }
    });
});

Alles, was Sie brauchen, ist hier .