Wie übergebe ich den Wert beim Aufrufen der Vertragsfunktion?

Derzeit übergebe ich in Truffle den Wert manuell, aber wie mache ich diesen Wert zu etwas, das ich benötige? Wenn ich zum Beispiel eine Transaktion auf MetaMask durchführen möchte, erscheint eine Transaktion, die den x-Wert anfordert, und ich genehmige sie. Wie würde ich einen Wert vom Benutzer anfordern? Ich möchte diesen Vertrag auf Rinkeby bereitstellen und testen.

TokenSaleContract.at(this.props.address)
        .then(instance => {
            contractInstance = instance;
            contractInstance.buyToken(2, {value: 507087936329796580})
            return c.numberOfTokensFromAddress('0x...')
        })
        .then(numberOfTokens => {
            console.log(`You (0x...) now have ${numberOfTokens}`);
        })
Wenn Sie "in Truffle" sagen, meinen Sie damit, dass Sie die Truffle-Konsole verwenden, richtig?
Ich meine, ich benutze Truffle-Contract

Antworten (1)

Sie können eine Bibliothek verwenden, readline-syncum Benutzereingaben zu erhalten ( Quelle ):

var readlineSync = require('readline-sync');

// Wait for user's response. 
var userName = readlineSync.question('May I have your name? ');
console.log('Hi ' + userName + '!');

Hinweis: Vergessen Sie nicht, das Paket zuerst zu installieren, zum Beispiel yarn add readline-sync.

Ich versuche, den Benutzer nicht zur Eingabe der Daten zu verpflichten, sondern den Wertbetrag an den Benutzer senden zu lassen
Welchen "Wert" meinst du? Sie können Ether mit senden web3.eth.sendTransaction.
Ich spreche von dieser Zeile, contractInstance.buyToken(2, {value: 507087936329796580}ich möchte, dass der Wert an den Käufer weitergegeben wird