Доступ/изменение параметров опций в контракте

Я использую трюфель и метамаску для развертывания очень простого контракта, который позволяет передавать эфир с одной тестовой учетной записи на другую.

Как использовать файл JavaScript для доступа к параметрам параметров, которые были переданы во время развертывания? Можно ли впоследствии изменить параметры конструктора, переданные во время развертывания?

Вот строка в 2_deploy_contracts.js:

deployer.deploy(EscrowPayment, web3.eth.accounts[1], web3.eth.accounts[2], {gas: 4400000, value: web3.toWei(20, 'ether')});

Параметр options будет{gas: 4400000, value: web3.toWei(20, 'ether')}

Вот конструктор в контракте:

function EscrowPayment(address _seller, address _judge) payable {
    buyer = msg.sender;
    seller = _seller;
    judge = _judge;
}

Я прочитал эту документацию , но не смог сделать что-то вроде "myContract.options"

Ответы (1)

Параметры, которые вы передаете в последнем объекте json: gaslimit и значение Ether для отправки. Эти (и другие настраиваемые параметры, такие как отправитель или цена газа) доступны через объекты msgи tx, как описано здесь :

function EscrowPayment(address _seller, address _judge) payable {
    gasLimit = msg.gas; // this is only the *remaining* gas and not the exact value that you passed
    value = msg.value; // in Wei
    gasPrice = tx.gasprice;
    buyer = msg.sender;
    seller = _seller;
    judge = _judge;
}
Спасибо! Очень полезно. Мне также было интересно, можем ли мы изменить переменные, такие как продавец, после развертывания контракта?
вы не можете - если вы не предоставите для этого функцию (и тогда каждый, кто увидит ваш контракт, сможет увидеть его модифицируемым). В этом и заключается сила смарт-контрактов, кстати, благодаря этому глубокому пониманию вы понимаете в блокчейне больше, чем 99,9% людей :)
@juwu, если это полезно, подумайте о том, чтобы принять мой ответ с зеленой кнопкой с галочкой :)