Кто-нибудь может подсказать мне, как запланировать транзакцию, которая будет отправлена после майнинга определенного номера блока?
Спасибо
Вы можете запустить следующую функцию:
function f( blocknumber, to_address, value_) {
var filter = web3.eth.filter('latest').watch(function(err, blockHash) {
var target=blocknumber;
if(web3.eth.blockNumber==target)
{
filter.stopWatching();
//your function here
web3.eth.sendTransaction({to:to_address, from:web3.eth.coinbase, value: web3.toWei(value_,"ether")});
filter = null;
console.warn('Block reached');
if (callback)
return callback(false);
else
return false;
}
else {
console.log('Waiting the block');
}
});
};
Я пробовал это в geth (пока я не использую четность), и это работает отлично. будьте осторожны с синхронными методами eth_blockNumber
.
Просто запланируйте его с помощью пользовательского интерфейса кошелька.
Создайте любую транзакцию, которая вам нравится, убедитесь, что вы выбрали «расширенные настройки» и определите условие:
Паритет будет удерживать эту транзакцию до тех пор, пока условие не будет выполнено. Обратите внимание, для этого ваш узел должен продолжать работать.
Если ваш вопрос о том, как самостоятельно отправить транзакцию в любой момент после достижения определенной высоты блока, вы можете запустить постоянно работающий демон на хосте, которым вы управляете, который сделает это программным способом — как ответ от @BadrBelaj.
Если, с другой стороны, вы хотите отправить транзакцию в сеть сейчас и автоматически выполнить ее сетью один раз при определенной высоте блока, то вы не можете сделать это изначально на уровне Ethereum. Тем не менее, есть аккуратно развернутые смарт-контракты, такие как будильник Ethereum , которые полагаются на толпу, чтобы выполнять работу «путем Ethereum». Это очень умно и, возможно, решит ваш вариант использования.
Это довольно легко сделать с помощью будильника Ethereum , который был развернут в основной сети и с тех пор отлично работает. На данный момент выполнено 100% сделок.
Вы можете запланировать транзакцию на определенный блок/время следующими способами:
Оба способа одинаково хороши.
Что касается самого протокола - он прошел аудит безопасности. По протоколу уже было перемещено более 1000 ETH.
Будильник Ethereum децентрализован и работает автоматически. В настоящее время это лучший способ запланировать транзакцию, и он не подвержен проблемам, связанным с решениями, опубликованными в других ответах.
Обращаясь к другим ответам:
Кто-то здесь упомянул, что способ EAC не самый лучший, потому что "он не автоматический". Ну, прямо скажу - он полностью автоматический . В другом ответе упоминается использование локального клиента для планирования транзакций - это централизованный способ, зависящий от нехватки электроэнергии и Интернета, а также от программных ошибок. Вы также должны запустить свой компьютер круглосуточно для этой работы.
эт