Как передать значение при вызове функции контракта?

В настоящее время в Truffle я передаю значение вручную, но как мне сделать это значение тем, что мне нужно. Например, когда я хочу совершить транзакцию в MetaMask, появляется транзакция, запрашивающая значение x, и я ее одобряю. Как мне запросить значение у пользователя? Я хочу развернуть и протестировать этот контракт на Ринкеби.

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}`);
        })
Когда вы говорите «в Truffle», вы имеете в виду, что используете консоль Truffle, верно?
Я имею в виду, что использую трюфельный контракт

Ответы (1)

Вы можете использовать библиотеку для readline-syncполучения пользовательского ввода ( источник ):

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

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

Примечание: Не забудьте сначала установить пакет, например yarn add readline-sync.

Я пытаюсь не требовать от пользователя ввода данных, а скорее отправлять пользователю сумму значения
О какой «ценности» вы говорите? Вы можете отправить эфир, используя web3.eth.sendTransaction.
Я говорю об этой строке, contractInstance.buyToken(2, {value: 507087936329796580}я хочу, чтобы значение было передано покупателю