Баланс адреса в зависимости от переменной времени

есть ли способ сравнить баланс адреса в два разных раза или вообще проверить баланс адреса в определенное время?

Я хотел бы сделать что-то вроде ...

uint256 public startTime
address public exampleAddress

function exampleFunction () public constant returns (uint value) {
    if (balanceOf(exampleAddress) < balanceOf_atStartTime(exampleAddress)) {
        returns X;
    }
}

Мой предпочтительный вход был бы переменной, как указано выше, но также подходящей отметкой времени или событием Unix.

Кто-нибудь знает, как это сделать?

Спасибо вам заблаговременно

3 голоса | спросил Daniel 5 J0000006Europe/Moscow 2018, 15:52:18

2 ответа


2

Короткий ответ: Нет, вы не можете получить баланс прошлых адресов через Solidity. Но есть решение, использующее web3js.

Длинный ответ: вы можете сделать что-то подобное, чтобы получить баланс адреса в определенное время, как показано здесь: Получить баланс История адреса

со следующим кодом.

let blockNum = web3.eth.blockNumber;
const historicTimestamp = new Date(historicDate).getTime();
while(true) {
  const block = web3.eth.getBlock(blockNum);
  if(block.timestamp < historicTimestamp) break;
  --blockNum;
}

//The blockNumber here is your required block number
web3.eth.getBalance(address, blockNumber).then(balance => `Balance at block number is ${balance}`);

Затем вы можете передать его на свой смарт-контракт и сравнить два баланса там или сравнить в web3 полностью.

ответил jasper 5 J0000006Europe/Moscow 2018, 16:36:53
0

Я не думаю, что это можно сделать из самого умного контракта.

Лучшее, что вы могли бы сделать, это попытаться использовать параметр blocknumber от web3 и оценить номер блока как можно ближе к желаемой отметке времени.

ответил Tudor Constantin 5 J0000006Europe/Moscow 2018, 16:34:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132