Пока экспериментирую. Я создаю контракт кошелька. Вот адрес: https://etherscan.io/address/0xC23501aB1E8E5C5EDB0fFA83C5A4DcFb9c31a355 Я отправил на него немного эфира. Теперь я хочу отправить эфир из контракта кошелька на другой счет. Захожу отправить, ввожу сумму, проверяю газ, когда нажимаю отправить. Сумма показывает 0. Я думаю, что я сделал что-то не так с созданием контракта кошелька в Mist.
Я предпочитаю использовать geth, а не туман для взаимодействия с контрактами. Командная строка позволяет вам делать именно то, что вы намереваетесь, по сравнению с работой через графический интерфейс.
Первое, что вам нужно, это договор ABI. Это фрагмент javascript (или JSON), который определяет, как вы можете взаимодействовать с контрактом. У каждого контракта в блокчейне есть один — простой контракт приветствия , Etheria , DAO … все сразу.
Чтобы получить abi, вставьте код контракта в компилятор, например, https://ethereum.github.io/browser-solidity/ .
Этот контракт на получение пожертвований может быть похож на то, что вы пытаетесь сделать. При компиляции выясняется, что его аби:
[{"constant":false,"inputs":[],"name":"kill","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"getContractCreationValue","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"sendOneEtherHome","outputs":[],"type":"function"},{"inputs":[],"type":"constructor"}]
Скомпилируйте свой контракт, и вы получите что-то похожее. (Приведенный выше код не будет работать для вашего контракта.)
Теперь, когда у вас есть ABI и адрес контракта, вы готовы получить интерактивный доступ к контракту с помощью geth.
var abi = <cut and paste the contract abi here>;
var contract = web3.eth.contract(abi).at(<contract address>);
contract.functionname();
contract.functionname.sendTransaction(...);
Надеюсь, контракт, из которого вы пытаетесь получить средства, содержит метод получения эфира, и у вас есть на это разрешение. В моем примере «извлекатель пожертвований» вы должны сделать:
var tx = endowmentretriever.sendOneEtherHome.sendTransaction({from:eth.coinbase});
Если вы опубликуете весь контракт (возможно, используя суть), я смогу помочь в дальнейшем и / или определить, возможен ли вообще поиск.
Удачи!
q9f
0
в порядке, продолжайте и создайте эту транзакцию.Николя Массарт
тайвано