Как запланировать транзакцию?

Кто-нибудь может подсказать мне, как запланировать транзакцию, которая будет отправлена ​​после майнинга определенного номера блока?

Спасибо

Ответы (4)

Вы можете запустить следующую функцию:

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.

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

Просто запланируйте его с помощью пользовательского интерфейса кошелька.

транзакция по счетам 1

Создайте любую транзакцию, которая вам нравится, убедитесь, что вы выбрали «расширенные настройки» и определите условие:

  • отправить после номера блока
  • отправить после даты и времени

Паритет будет удерживать эту транзакцию до тех пор, пока условие не будет выполнено. Обратите внимание, для этого ваш узел должен продолжать работать.

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

Если ваш вопрос о том, как самостоятельно отправить транзакцию в любой момент после достижения определенной высоты блока, вы можете запустить постоянно работающий демон на хосте, которым вы управляете, который сделает это программным способом — как ответ от @BadrBelaj.

Если, с другой стороны, вы хотите отправить транзакцию в сеть сейчас и автоматически выполнить ее сетью один раз при определенной высоте блока, то вы не можете сделать это изначально на уровне Ethereum. Тем не менее, есть аккуратно развернутые смарт-контракты, такие как будильник Ethereum , которые полагаются на толпу, чтобы выполнять работу «путем Ethereum». Это очень умно и, возможно, решит ваш вариант использования.

Да, ответ Бадра именно то, что мне нужно. Второй вариант мне не кажется оптимальным, так как он не совсем автоматический.

Это довольно легко сделать с помощью будильника Ethereum , который был развернут в основной сети и с тех пор отлично работает. На данный момент выполнено 100% сделок.

Вы можете запланировать транзакцию на определенный блок/время следующими способами:

  1. Используйте MyCrypto (переключите кнопку «Отправить позже») — вот полезное руководство .

Интерфейс MyCrypto для планирования

  1. Используйте будильник Ethereum DAPP

Оба способа одинаково хороши.

Что касается самого протокола - он прошел аудит безопасности. По протоколу уже было перемещено более 1000 ETH.


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

Обращаясь к другим ответам:

Кто-то здесь упомянул, что способ EAC не самый лучший, потому что "он не автоматический". Ну, прямо скажу - он полностью автоматический . В другом ответе упоминается использование локального клиента для планирования транзакций - это централизованный способ, зависящий от нехватки электроэнергии и Интернета, а также от программных ошибок. Вы также должны запустить свой компьютер круглосуточно для этой работы.