Как мне вызвать излучение в солидности из интерфейса - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть эта функция здесь

 function reinvest() onlyDivis public {
        address _customerAddress = msg.sender;
        uint256 _dividends = myDividends(false);
        payoutsTo_[_customerAddress] +=  (int256) (_dividends * magnitude);
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;
        uint256 _tokens = purchaseTokens(0x0, _customerAddress, _dividends);
        emit onReinvestment(_customerAddress, _dividends, _tokens);

Я могу вызвать функцию реинвестирования из моего интерфейса, но как мне использовать emit (функцию), чтобы я мог использовать ее для обновления информации в моем интерфейсе?

1 Ответ

0 голосов
/ 22 февраля 2020

генерация событий на самом деле является очень хорошим подходом для поиска чего-то в дальнейшем.

Настолько хорошо, что некоторые разработчики ethql и даже TheGraph .

Но хотя на первый взгляд эти два могут показаться немного сложными, вы можете очень легко сделать то, что вы хотите, используя ethers .

Вот пример

let tx = await contractWithSigner.setValue("I like turtles.");

contract.on("ValueChanged", (author, oldValue, newValue, event) => {
  // Called when anyone changes the value

  console.log(author);
  // "0x14791697260E4c9A71f18484C9f997B308e59325"

  console.log(oldValue);
  // "Hello World"

  console.log(newValue);
  // "Ilike turtles."

  // See Event Emitter below for all properties on Event
  console.log(event.blockNumber);
  // 4115004
});
await tx.wait();

Используя следующий контракт

pragma solidity ^0.4.24;

contract SimpleStorage {

  event ValueChanged(address indexed author, string oldValue, string newValue);

  string _value;

  constructor(string value) public {
    emit ValueChanged(msg.sender, _value, value);
    _value = value;
  }

  function getValue() view public returns (string) {
    return _value;
  }

  function setValue(string value) public {
    emit ValueChanged(msg.sender, _value, value);
    _value = value;
  }
}
...