Как хранить ETH в смарт-контракте

Вопрос в том, как хранить эфир в смарт-контракте.

На первом этапе я пытаюсь передать значение транзакции на адрес смарт-контракта, делая что-то вроде этого:

function storeETH() payable public {    
   address(this).transfer(msg.value);
}

У меня есть адрес, но я думаю, что это не кошелек... Я не знаю, как хранить ETH в моем смарт-контракте или есть ли возможность сделать что-то подобное.

Пожалуйста, помогите мне :D

Ответы (3)

Ваш transferперевод с контракта на контракт. Это не нужно, и вы можете просто удалить его:

function storeETH() payable public {    
    // nothing to do here
}

https://programtheblockchain.com/posts/2017/12/15/writing-a-contract-that-handles-ether/ может помочь.

Все, что вам нужно, это оплачиваемая функция в вашем смарт-контракте. Смарт-контракты могут выступать в качестве кошельков и хранить ETH. Вы захотите создать функцию для отправки ETH из вашего кошелька в свой собственный кошелек, чтобы получить его!

Я бы предложил это сделать. Таким образом, вы можете просто отправить эфир на адрес смарт-контракта, и этот эфир будет сохранен в смарт-контракте, а также вы можете вызвать функцию storeETH. Включите обе функции.

function storeETH() payable public {    
// nothing to do here
}
function() payable public {}