Rules: no AI clichés (listed banned words). Senior engineer style like Dan Luu / P...
The user wants a technical article draft in Indonesian (mostly) for Dev.to/Paragraph.com, ~600 words, about zero-gas autonomous agents and account abstraction on Base L2. Target audience: AI engineers, Web3 developers, crypto builders. Rules: no AI clichés (listed banned words). Senior engineer style like Dan Luu / Paul Graham: direct, varied rhythm, honest, empirically grounded. Include real…
Dalam artikel ini tentang agent otomatis zero-gas dan abstraksi akun pada Basis L2, kita akan membahas berbagai aspek teknis. Penulis menggunakan bahasa Indonesia sebagai utama, tetapi termasuk teks inggris untuk kesesuaian dengan Dev.to dan web3.dev. Kode Python digunakan untuk contoh praktis.
Base L2 memiliki Chain ID 8453, biaya gas yang sangat rendah (EIP-1559 dengan base fee sekitar 0.001-0.01 gwei), dan waktu blok sekitar 2 detik. Untuk memberikan agent zero-gas, adalah penting untuk memahami konsep paymaster.
Paymaster adalah kontrak yang menyponsor transaksi untuk agent. Paymaster ini bisa dijamin oleh pengoperasi (subsidy) atau menggunakan ERC-20 paymaster (seperti USDC). Namun, cara terakhir melibatkan risiko "chicken-and-egg" karena agent harus membeli USDC terlebih dahulu.
Sebagai alternatif, bisa ada deposit dari paymaster di EntryPoint dengan polisi yang dianotasi secara off-chain. Salah satu kesulitan utama bukan adalah sponsor, melainkan mekanisme policy engine yang harus dipatuhi, seperti limit kecepatan, allowlist, dan batas pengeluaran.
Kode Python untuk membuat UserOperation dan menyisipkannya ke bundler (Pimlico atau Alchemy) mencakup beberapa langkah kunci. Berikut adalah contoh bagaimana mem-build UserOperation menggunakan web3.py dan eth-account:
```python
import os, time, requests
from eth_account import Account
from eth_abi import encode
from web3 import Web3
# Konstanta
BASE_CHAIN_ID = 8453
BUNDLER = "https://api.pimlico.io/v2/8453/rpc"
ENTRYPOINT = "0x0000000071727De22E5E9d8BAf0edAc6f37da032" # v0.7
AGENT_EOA = "0x92Aff59709b03b9373b8fA887D24953D60fAd919"
```
EntryPoint v0.7 memiliki alamat 0x0000000071727De22E5E9d8BAf0edAc6f37da032, sedangkan v0.6 adalah 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789.
Navigasi ke bagian pengaturan paymaster:
```python
AGENT_WALLET = AGENT_EOA
NONCE = ... # nonce dari key manager
```
Untuk menggeser transaksi, kita mem-encode UserOperation:
```python
def pack_paymaster_data(paymaster: str, valid_until: int, sig: bytes) -> bytes:
return (
bytes.fromhex(paymaster[2:]) # paymaster (20 bytes)
+ (150_000).to_bytes(16, "big") # verification gas limit
+ (60_000).to_bytes(16, "big") # post op gas limit
+ valid_until.to_bytes(6, "big") # sponsor deadline
+ sig # signature (65 bytes)
)
```
Kode ini menggunakan paymaster v0.7 yang memungkinkan sponsor untuk menentukan layanan apa yang akan dibayar. Paymaster ini di-animate oleh user_op:
```python
user_op = {
"sender": AGENT_WALLET,
"nonce": NONCE,
"maxFeePerGas": "0.01", # dalam wei
"maxPriorityFeePerGas": "0.001",
"data": ENTRYPOINT.encodeABI(), # alamat EntryPoint
"type": 2, # type transaksi untuk user operation
"paymasterAndData": pack_paymaster_data(
"0xYOUR_PAYMASTER_ADDRESS", # alamat paymaster
time.time() + 1500, # deadline waktu sponsor
"0xYOUR_SIGNATURE"
),
"chainId": BASE_CHAIN_ID,
}
```
Setelah UserOperation dibangun, ditandatangani menggunakan private key agent dan dikirim ke bundler melalui RPC eth_sendUserOperation. Bundler akan mengecek paymaster dan memvalidasi transaksi.
Simulasi transaksi dapat dilakukan menggunakan eth_call atau estimasi gas oleh bundler sendiri. Ketersediaan teks atau informasi lain yang dirasa berguna bisa ditambahkan dalam artikel ini.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.