Lanjut ke konten utama

Membuat log data dari kontrak pintar dengan aksi

kontrak pintarremixsolidityaksi
Tingkat menengah
jdourlens
EthereumDev(opens in a new tab)
3 April 2020
2 bacaan singkat minute read
comp-tutorial-metadata-tip-author 0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE

Di Solidity, aksi adalah sinyal yang dikirimkan yang dapat diaktifkan oleh kontrak pintar. DApp, atau apa pun yang terhubung ke API JSON-RPC Ethereum, bisa mendengarkan aksi ini dan bertindak sesuai dengannya. An event can also be indexed so that the event history is searchable later.

Aksi-aksi

The most common event on the Ethereum blockchain at the time of writing this article is the Transfer event that is emitted by ERC20 tokens when someone transfers tokens.

1event Transfer(address indexed from, address indexed to, uint256 value);
Salin

The event signature is declared inside of the contract code and can be emitted with the emit keyword. For example, the transfer event logs who sent the transfer (from), to who (to) and how much tokens were transferred (value).

If we get back to our Counter smart contract and decide to log every time the value is changed. Karena kontrak ini tidak dimaksudkan untuk digunakaan, tapi sebagai dasar untuk menyusun kontrak lain dengan memperluasnya: ini disebut kontrak abstrak. In the case of our counter example, it would look like this:

1pragma solidity 0.5.17;
2
3contract Counter {
4
5 event ValueChanged(uint oldValue, uint256 newValue);
6
7 // Private variable of type unsigned int to keep the number of counts
8 uint256 private count = 0;
9
10 // Function that increments our counter
11 function increment() public {
12 count += 1;
13 emit ValueChanged(count - 1, count);
14 }
15
16 // Getter to get the count value
17 function getCount() public view returns (uint256) {
18 return count;
19 }
20
21}
Tampilkan semua
Salin

Perhatikan bahwa:

  • Baris 5: kita mendeklarasikan aksi kita dan isinya, nilai lama dan nilai baru.

  • Baris 13: Saat kita menambah variabel penghitung kita, kita memancarkan aksi.

Jika sekarang kita menggunakan kontrak dan memanggil fungsi penambahan, kita akan melihat Remix secara otomatis akan menampilkan fungsi tersebut, jika Anda mengklik transaksi baru di dalam array yang bernama log.

Tangkapan layar Remix

Log sangat berguna untuk membuat debug kontrak pintar Anda, tapi juga sangat penting jika Anda menyusun aplikasi yang dipakai oleh berbagai orang dan memudahkan untuk membuat analitik guna melacak dan memahami bagaimana kontrak pintar Anda digunakan. The logs generated by transactions are displayed in popular block explorers and you can also for example use them to create off chain scripts for listening to specific events and taking action when they occur.

Terakhir diedit: @nhsz(opens in a new tab), 15 Agustus 2023

Apakah tutorial ini membantu?