BARU: Helius mengakuisisi Light Protocol
Apa itu Token Extensions?
Blog/Riset

Apa itu Token Extensions?

Engineer Pengalaman DeveloperOwen Venter di XOwen Venter di LinkedIn
Bacaan 13 menit

Perkembangan dalam ekosistem Solana berlangsung pesat selama setahun terakhir, dengan banyak teknologi baru yang menarik diluncurkan. Solana dikenal berkat kecepatan pemrosesannya yang sangat tinggi dan biaya transaksi yang lebih rendah. Namun, penawaran mengesankan ini masih dapat ditingkatkan. Hadirlah Token Extensions, program token baru yang dirancang untuk meningkatkan fungsionalitas token Solana saat ini. Mari jelajahi apa yang ditawarkan standar Token Extensions bagi ekosistem Solana.

Program Token Saat Ini di Solana

Semua token di Solana yang bukan token native $SOL dianggap sebagai spl-token. Ini mencakup token fungible (seperti $BONK) dan token non-fungible (NFT). Program token adalah program yang menetapkan fungsi umum untuk membuat dan menggunakan token Fungible maupun Non-Fungible. Program token menawarkan sejumlah fitur yang telah biasa digunakan oleh developer dan pengguna akhir. Operasi ini mencakup pencetakan, transfer, dan pembakaran token. Selain itu, program ini menawarkan fungsionalitas seperti memperbarui dan membekukan token, yang memungkinkan account token dibekukan sehingga perubahan pada status account tidak dapat dilakukan hingga pembekuan dicabut.

Apa itu Token Extensions dan mengapa diperlukan?

Anda dapat menganggap Token Extensions sebagai versi baru dan lebih baik dari program token di Solana. Program ini dapat menangani token fungible maupun non-fungible. Program baru ini masih memiliki semua fitur program Token lama, tetapi kini dilengkapi serangkaian fitur baru yang berguna untuk meningkatkan fungsionalitas token di Solana. Fitur-fitur baru yang menjadi keunggulan utama Token2022 ini hadir dalam bentuk ekstensi.

Namun, mengapa Token Extensions diperlukan? Seiring kemajuan Solana, kebutuhan akan fungsionalitas token yang lebih kompleks dan adaptif terus meningkat. Meskipun Program Token Solana saat ini telah memenuhi kebutuhan dasar token fungible dan non-fungible melalui serangkaian fitur sederhana, kesederhanaannya menciptakan batasan yang dapat menghambat inovasi. Developer dengan ide-ide baru sering kali perlu melakukan fork terhadap Program Token untuk menambahkan fungsionalitas yang dibutuhkan, sehingga menimbulkan tantangan dalam mencapai adopsi luas. Model pemrograman Solana mengharuskan program dan account disertakan dalam transaksi, sehingga pembuatan transaksi yang melibatkan beberapa program token menjadi lebih rumit. Selain itu, wallet dan program on-chain harus memercayai setiap program token yang mereka dukung, dan hal ini dapat berisiko. Untuk menjawab perkembangan ini, Solana menghadirkan Token2022—serangkaian fitur tambahan dan peningkatan yang dirancang untuk memperluas kemampuan token dalam ekosistem.

Memperkenalkan Ekstensi: Sebuah Langkah Evolusioner

Kemampuan revolusioner standar baru ini terletak pada ekstensi yang tersedia, yaitu serangkaian field baru yang diperkenalkan untuk memenuhi berbagai kebutuhan. Secara sederhana, dalam konteks Token Extensions, ekstensi adalah fitur atau fungsionalitas tambahan yang dapat ditambahkan ke token untuk meningkatkan kemampuan dan kegunaannya. Ekstensi memungkinkan pembuat token menyesuaikan perilaku dan karakteristik token mereka dengan kebutuhan atau tujuan tertentu. Saat membuat token, Anda dapat memilih untuk menggunakan sejumlah ekstensi ini. Mari kita bahas beberapa ekstensi utama dan potensi dampaknya terhadap ekosistem Solana. Perlu diperhatikan bahwa belum semua ekstensi ini aktif saat ini.

Ekstensi Mint

Berikut penjelasan untuk setiap ekstensi mint:

1. Biaya Transfer

Program Token yang ada tidak mendukung biaya transfer, tetapi standar Token Extensions mengubahnya dengan memungkinkan konfigurasi biaya transfer pada tingkat protokol. Mekanisme ini menghadirkan tingkat kendali finansial baru atas transaksi.

2. Hook Transfer

Ekstensi Transfer Hook memberi pembuat token lapisan kendali tambahan atas transfer token mereka. Hal ini sangat penting untuk menangani tantangan terkait royalti NFT. Ekstensi Transfer Hook memungkinkan pembuat token membuat program khusus yang akan digunakan token setiap kali ditransfer. Setiap kali transfer token dimulai, token akan berkomunikasi dengan program khusus ini sehingga tindakan lanjutan dapat dijalankan.

3. Menutup Mint

Token Extensions mengatasi celah penting dalam program Token dengan memungkinkan account mint ditutup oleh alamat yang dipilih, sesuatu yang sebelumnya tidak dapat dilakukan. Hal ini dicapai dengan menginisialisasi ekstensi MintCloseAuthority sebelum menginisialisasi mint. Dengan demikian, pihak selain wallet otoritas dapat menutup mint token.

4. Token Berbunga

Token Extensions memperkenalkan ekstensi InterestBearingMint, yang memungkinkan jumlah token di UI ditampilkan secara berbeda dengan menyertakan bunga yang telah terakumulasi. Fitur ini pada dasarnya memungkinkan token untuk 'menghasilkan bunga', sehingga nilainya makin tinggi semakin lama Anda menyimpannya.

5. Token yang Tidak Dapat Ditransfer (token Soulbound)

Ekstensi mint NonTransferable memungkinkan pembuatan token "soul-bound" yang tidak dapat dipindahkan dari wallet. Fitur ini cocok untuk pencapaian atau hadiah unik. Token tersebut juga dapat digunakan sebagai tiket acara karena tiket itu tidak dapat Anda kirimkan kepada orang lain.

6. Transfer Rahasia

Token Extensions memperkenalkan Confidential Token Extension baru, yang dikenal sebagai Confidential Transfers—fitur pendukung privasi yang menggunakan zero-knowledge proof untuk mengenkripsi saldo token dan jumlah transfer bagi token SPL.

Tujuan utama ekstensi ini adalah meningkatkan privasi pengguna dengan berfokus pada kerahasiaan, bukan anonimitas. Karena saldo dapat ditambah atau dikurangi, standar Token Extensions memerlukan skema enkripsi yang memungkinkan operasi matematika tersembunyi tersebut; enkripsinya harus bersifat homomorfik. Enkripsi homomorfik adalah kelas khusus skema enkripsi yang memungkinkan jenis komputasi tertentu dilakukan pada data terenkripsi tanpa harus mendekripsi data tersebut. Dengan demikian, komputasi tersembunyi ini akan menghasilkan keluaran terenkripsi yang, ketika didekripsi, setara dengan hasil penerapan operasi matematika yang sama pada plaintext. Confidential Transfers menggunakan “Twisted ElGamal Encryption” untuk memungkinkan pelaksanaan operasi matematika tersembunyi pada ciphertext.

Sebagai informasi tambahan bagi Anda yang tertarik, Twisted ElGamal Encryption adalah varian sederhana dari skema enkripsi ElGamal standar, tempat ciphertext dibagi menjadi Pedersen commitment untuk pesan terenkripsi dan handle dekripsi yang memungkinkan operasi matematika tersembunyi dilakukan pada ciphertext.

Confidential Transfers divalidasi menggunakan Sigma Protocols, kelas khusus zero-knowledge proof yang memungkinkan satu pihak (prover) membuktikan kepada pihak lain (verifier) bahwa mereka mengetahui sebuah rahasia tanpa mengungkapkan rahasia tersebut. Sigma Protocols ini diperlukan untuk sejumlah instruksi yang disediakan bersama ekstensi. Mari kita uraikan setiap proof:

Proof Validitas (Public-key)

  • Memverifikasi bahwa public key Twisted ElGamal memiliki format yang benar
  • Anggap ini seperti memvalidasi “kartu identitas digital” orang lain sebelum memulai percakapan aman
  • Ini diperlukan untuk instruksi ConfigureAccount

Proof Validitas (Ciphertext)

  • Memastikan pesan terenkripsi memiliki format yang benar
  • Anggap ini seperti menerima kotak tersegel—Anda tahu kotak tersebut belum diutak-atik karena segelnya masih utuh
  • Ini diperlukan untuk instruksi Withdraw, Transfer, dan TransferWithFee

Proof Saldo Nol

  • Membuktikan bahwa ciphertext Twisted ElGamal mengenkripsi angka nol
  • Anggap ini sebagai cara untuk memastikan saldo rekening bank Anda nol tanpa membuka aplikasi bank dan memeriksanya
  • Ini diperlukan untuk instruksi EmptyAccount

Proof Kesetaraan

  • Mengonfirmasi dua jenis kesetaraan—antara dua ciphertext ElGamal atau antara ciphertext ElGamal dan Pedersen commitment
  • Anggap ini seperti memiliki dua gudang terkunci yang penuh dengan peralatan, lalu membuktikan bahwa keduanya berisi peralatan yang sama tanpa benar-benar membukanya
  • Ini diperlukan untuk instruksi Transfer, TransferWithFee, WithdrawWithheldTokensFromMint, dan WithdrawWithheldTokensFromAccounts

Fee Sigma Proof

  • Membuktikan bahwa biaya transfer yang di-commit sudah benar
  • Anggap ini seperti mengonfirmasi kepada FedEx bahwa Anda telah membayar bea untuk paket Anda tanpa menunjukkan jumlah persis biaya yang dibayarkan
  • Ini diperlukan untuk instruksi TransferWithFee

Range Proof

  • Mengonfirmasi bahwa angka terenkripsi berada dalam rentang tertentu
  • Anggap ini seperti menebak tinggi badan seseorang dan membuktikan bahwa tebakan Anda berada dalam rentang tertentu yang benar tanpa mengungkapkan tinggi badan sebenarnya
  • Solana menggunakan Bulletproofs untuk proof ini. Anda dapat mempelajarinya lebih lanjut melalui makalah akademis ini dan implementasi dalek mereka

Singkatnya; zero-knowledge proof ini digunakan untuk memvalidasi bahwa satu pihak mengetahui suatu rahasia yang dapat diverifikasi pihak lain tanpa mengungkapkannya. Berbagai jenis proof ini membantu memastikan saldo dan transfer token berfungsi secara matematis sebagaimana mestinya, dengan privasi penuh melalui enkripsi.

Hanya pemegang account yang memiliki kunci dekripsi yang dapat melihat saldo mereka dalam sistem rahasia ini. Namun, dalam situasi tertentu, pihak ketiga eksternal mungkin perlu meninjau saldo, baik untuk keperluan audit maupun kepatuhan. Confidential Token Extension mendukung kebutuhan ini melalui sistem Global Auditor. Dalam sistem ini, setiap account dapat memiliki kunci dekripsi terpisah sehingga pemegang dapat memberikan akses baca secara selektif ke account tertentu. Mint, atau entitas yang menerbitkan aset, memiliki struktur data khusus yang secara opsional dapat menyertakan “kunci enkripsi auditor” global. Kodenya adalah sebagai berikut:

Kode
Transfer {
  amount_sender: PKE::encrypt(pke_pubkey_sender, 10),
  amount_receiver: PKE::encrypt(pke_pubkey_receiver, 10),
  amount_auditor: PKE::encrypt(pke_pubkey_auditor, 10),
  range_proof: RangeProof,
  equality_proof: EqualityProof,
  ...
}

Parameter amount_auditor adalah jumlah transfer yang dienkripsi menggunakan kunci enkripsi publik auditor. Siapa pun yang memiliki kunci rahasia auditor dapat mendekripsi amount_auditor sehingga dapat mengaudit jumlah transaksi untuk mint tertentu.

Jika Anda penggemar keamanan, Anda mungkin telah melihat potensi kelemahan dalam desain ini. Misalkan Alice membuat proof berdasarkan saldo terenkripsinya. Namun, pada saat yang sama, Bob mengirim token kepada Alice dan transaksinya diproses lebih dahulu. Transaksi Alice kemudian ditolak karena proof yang dibuat tidak mencerminkan status account yang baru diperbarui. Jenis serangan yang dikenal sebagai front-running ini dapat membuat account Alice tidak dapat digunakan jika Bob terus membanjiri jaringan dengan transfer ke account Alice. Saldo terenkripsi suatu account dibagi menjadi saldo pending dan saldo available untuk mencegah jenis serangan ini:

Kode
let ct_pending = PKE::encrypt(pke_pubkey, 10);
let ct_available = PKE::encryption(pke_pubkey, 50);

Account {
    mint: Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB,
    owner: 5vBrLAPeMjJr9UfssGbjUaBmWtrXTg2vZuMN6L4c8HE6,
    encryption_key: mpbpvs1LksLmdMhCEzyu5UEWEb3dsRPbB5,
    pending_balance: ct_pending,
    account_balance: ct_available,
    ...
}

Setiap dana keluar dikurangi dari saldo yang tersedia, sedangkan dana masuk ditambahkan ke saldo tertunda.

Confidential Transfers belum aktif dan dokumentasi Solana untuk subjudul Pengantar dan Panduan Memulai Cepat masih dalam pengembangan. Namun, Anda dapat melacak tugas yang tersisa untuk Confidential Transfers melalui issue GitHub ini di repositori solana-program-library. Dokumentasi tersebut memiliki bagian Pembahasan Mendalam tentang Protokol, tetapi penting untuk dicatat bahwa Anda tidak perlu memahami pembahasan mendalam tersebut untuk menggunakan ekstensi ini. Ringkasan sederhana mengenai Confidential Transfers dalam paragraf di atas semestinya sudah lebih dari cukup untuk membantu Anda mulai menggunakan Confidential Transfers setelah semuanya aktif.

Ekstensi Account

Berikut penjelasan untuk setiap ekstensi account:

1. Memo Wajib pada Transfer Masuk

Token Extensions menyertakan fitur untuk mewajibkan memo pada semua transfer masuk. Memo pada dasarnya adalah pesan singkat on-chain. Fitur ini mirip seperti menerima catatan bersama hadiah, sehingga Anda tahu siapa pengirimnya dan mengapa hadiah itu diberikan.

2. Kepemilikan Tetap

Ekstensi ImmutableOwner menambahkan lapisan keamanan dengan membuat kepemilikan account tidak dapat dialihkan. Ketentuan ini meningkatkan keamanan transaksi token. Untuk memahaminya dengan lebih baik, kita perlu melihat cara token disimpan dalam program token standar. Biasanya, saat hendak mengirim token ke wallet, langkah pertama adalah membuat account token untuk menyimpan token tersebut di dalam wallet penerima. Account ini dibuat dari kombinasi alamat mint token dan alamat wallet penerima. Semuanya berjalan baik, kecuali bahwa setelah account ini dibuat, kepemilikannya dapat dialihkan kepada orang lain. Dengan ekstensi Immutable Owner di Token2022, hal ini tidak akan dapat dilakukan lagi.

3. Status Default Account

Ekstensi DefaultAccountState memungkinkan pembuat mint membatasi penggunaan token dengan menetapkan semua account token baru sebagai beku secara default. Ekstensi ini memberikan lapisan kendali tambahan atas distribusi dan penggunaan token. Artinya, Anda dapat menerima token tetapi tidak dapat melakukan apa pun dengannya hingga pembuat token mengizinkannya.

4. Delegasi Permanen

Dengan Token Extensions, Anda dapat menetapkan delegasi account permanen untuk sebuah token. Pada dasarnya, ini memungkinkan Anda menunjuk seseorang (delegasi) yang akan selalu memiliki wewenang untuk mengelola token dari sebuah mint. Mereka dapat melakukan tindakan seperti mentransfer atau membakar token. Jika ekstensi ini digunakan, pihak berwenang akan memiliki hak delegasi tanpa batas atas account apa pun untuk mint tersebut. Hal ini bisa sangat berbahaya karena delegasi atau orang tersebut dapat mentransfer atau membakar token di wallet siapa pun.

Token Extensions vs. Ethereum dan Binance Smart Chain (BSC)

Ethereum dan Binance Smart Chain (BSC) telah membuat kemajuan signifikan di ranah DeFi, dan beberapa fitur Token Extensions telah kita lihat pada token di chain tersebut.

Salah satu contohnya adalah SafeMoon di BSC, yang memberlakukan biaya 10% pada setiap transaksi. Sebanyak 5% dari biaya ini didistribusikan kembali kepada pemegang SafeMoon lainnya. Hal ini mendorong pemegang untuk HODL. Konsep transfer rahasia yang menggunakan zero-knowledge proof juga bukan hal baru. Di Ethereum, proyek seperti Aztec Protocol telah mengeksplorasi transaksi privat.

Meskipun Solana sedikit lebih lambat dalam menyediakan fitur-fitur ini, kecepatannya yang unggul dan biaya transaksinya yang lebih rendah menciptakan lingkungan yang mendukung Token Extensions untuk berkembang, sehingga memberikan keunggulan kompetitif atas Ethereum dan BSC.

Pengadopsi awal Token Extensions

Developer, dApp, dan wallet perlu beradaptasi dengan fungsionalitas baru ini untuk memaksimalkan manfaat yang ditawarkan Token Extensions. Berikut beberapa contoh adopsi awal program baru ini:

$BERN / BonkEarn

$BERN, yang dibuat oleh komunitas $BONK, merupakan salah satu token pertama yang dibangun di atas program Token Extensions. Saat ini, $BERN menggunakan ekstensi Transfer Fee untuk mengenakan biaya 6,9% pada semua transfer. Tim $BERN menggunakan biaya ini untuk memberikan imbalan kepada pemegang $BERN dan $BONK.

Rincian lengkap:

  • 5% untuk “Bernzy Bonus Fee”, yang akan digunakan untuk memberikan imbalan kepada pemegang $BERN
  • 1% untuk membeli dan membakar $BONK
  • 0,5% untuk membakar $BERN
  • 0,3% untuk dana developer guna membayar lebih banyak biaya dan menambah likuiditas token.
  • 0,1% untuk $BONK DAO

Bursa terdesentralisasi

FluxBeam adalah DEX di Solana yang saat ini mendukung token yang dibuat dengan program Token Extensions.

Wallet

Backpack, ekstensi wallet populer, telah menambahkan dukungan untuk Token Extensions dan Phantom akan segera memiliki fungsionalitas ini.

Peralatan

Alat untuk mencetak token Anda sendiri dengan program Token Extensions kini telah aktif di FluxBeam.

RugCheck adalah alat untuk memeriksa pasar token Solana dan berbagai token. Alat ini telah disiapkan dan kini memungkinkan pemeriksaan token yang dibuat dengan Token 2022.

Menyambut Masa Depan

Pengenalan Token Extensions merupakan lompatan besar dalam perjalanan web3 Solana. Teknologi ini menghadirkan beragam fungsionalitas baru sekaligus meningkatkan kemampuan fitur yang sudah ada. Ekstensi inovatifnya tidak hanya memberi pembuat token kendali dan fleksibilitas yang lebih besar, tetapi juga membuka berbagai kemungkinan baru di ranah DeFi. Meskipun blockchain lain telah menawarkan fitur serupa, keunggulan Solana dalam hal kecepatan dan biaya, ditambah dengan fungsionalitas Token2022, menjadikannya pesaing tangguh di dunia kripto. Seiring dukungan dari pengguna awal dan komunitas luas terus berkembang, Token2022 siap memperkuat dan meningkatkan ekosistem Solana.

Berlangganan Helius

Ikuti perkembangan terbaru dalam pengembangan Solana dan dapatkan pembaruan saat kami memublikasikan postingan