BARU: Helius mengakuisisi Light Protocol
Bangun Program Solana dengan TypeScript Poseidon
Blog/Pengembangan

Poseidon: Bangun Program Solana dengan TypeScript

Mesin Talenta Solana.Team Turbin3 di XTeam Turbin3 di LinkedIn
Bacaan 8 menit

Poseidon adalah framework transpiler baru yang memungkinkan pengembang web membuat program on-chain Solana (yaitu, kontrak pintar) hanya dengan TypeScript, bahasa yang dikenal oleh jutaan orang di seluruh dunia. Framework ini secara signifikan menurunkan hambatan untuk memulai pengembangan on-chain sehingga Solana lebih mudah diakses oleh lebih banyak pengembang. Poseidon menerjemahkan kode TypeScript langsung menjadi Anchor, framework program Solana yang paling banyak digunakan.

Artikel ini akan membahas asal-usul, desain arsitektur, fitur utama, dan potensi dampak positif Poseidon terhadap lanskap pengembangan Solana. Selain itu, kami akan memandu Anda melalui contoh praktis program brankas token sederhana yang ditulis dengan Poseidon untuk menyoroti sejumlah kemampuan framework ini.

Latar Belakang

Menjelang akhir 2023, tim Turbin3 menerima tantangan ambisius dari Solana Foundation: “Dapatkah Anda membuat framework yang memungkinkan pengembang menciptakan program Solana menggunakan TypeScript?” Tentu saja, tanggapan pertama kami adalah bertanya, “Mengapa?”

TypeScript adalah superset JavaScript dengan tipe statis yang membantu pengembang mendeteksi kesalahan lebih awal dan menulis kode yang lebih mudah dipelihara. Sebagai standar de facto untuk pengembangan web modern, TypeScript dan JavaScript telah membangun salah satu komunitas pengembang terbesar di dunia. Menghadirkan pengembangan program dalam TypeScript memberikan peluang besar untuk memperluas jumlah pengembang Solana baru dan menurunkan hambatan untuk membangun di blockchain.

Menguasai pengembangan program Solana lebih menantang dibandingkan banyak blockchain lainnya. Pengembang baru harus menghadapi dua tantangan sekaligus, yaitu memahami model akun Solana dan mempelajari Rust, yang dapat menjadi kurva pembelajaran terjal. Kami di Turbin3 memahami hal ini lebih baik daripada siapa pun; 15% dari seluruh pengembang Solana baru mengikuti program kami.

Dengan memperkenalkan framework TypeScript, pengembang dapat memisahkan kedua tantangan ini dan memanfaatkan bahasa yang sudah mereka kuasai untuk men-deploy program pertama ke testnet dengan lebih cepat. Framework berbasis TypeScript untuk pengembangan program on-chain memungkinkan pengembang membangun aplikasi Solana full-stack secara mulus dalam satu bahasa untuk pertama kalinya.

Solusinya: Poseidon

Proyek ini bermula sebagai pustaka tipe dasar dan konsep transpiler, tetapi dengan cepat berkembang menjadi sesuatu yang jauh lebih tangguh setelah pembuatan prototipe awal dan masukan menyeluruh dari para ahli Solana dan TypeScript. Setelah berbulan-bulan membangun, menguji, memecahkan masalah, dan menerima masukan berharga dari para ahli industri, Poseidon mencapai tonggak penting awal tahun ini di Breakpoint 2024, tempat kami memperkenalkan karya kami kepada para pengembang yang ingin tahu. 

Dalam sebuah presentasi langsung, Shrinath, pengembang utama Poseidon kami, mendemonstrasikan cara menulis program Solana dalam TypeScript. Dengan satu perintah build, Poseidon mentranspilasi kode TypeScript menjadi sintaks Anchor lengkap—tepat di depan mata para peserta. Ruangan dipenuhi antusiasme dan terdengar bisikan: “Apakah ini benar-benar bisa berfungsi?”

Sejak saat itu, repositori sumber terbuka Poseidon berkembang pesat berkat kontribusi dari Poseidon Army kami yang terus bertumbuh di X dan Discord. Anggota komunitas menangani masalah, mengirimkan pull request, dan berkolaborasi membangun paket baru sehingga Poseidon semakin matang setiap hari. Peningkatan tersebut mencakup CLI yang disempurnakan, tambahan dukungan untuk fungsi program token, dan pesan kesalahan yang lebih baik. Meski masih dalam tahap awal, potensi Poseidon tidak dapat disangkal.

Dari sudut pandang teknis, kami melihat perkembangan Poseidon dalam empat tahap. Setelah diskusi awal, sesi curah pendapat, dan perancangan arsitektur, kami harus mengambil beberapa keputusan penting. Terutama: 

  • Menentukan asumsi tentang pustaka yang diperlukan
  • Melakukan derivasi akun di dalam isi instruksi dengan merangkai metode
  • Makro prosedural (konsep baru bagi banyak pengembang)

Kemudian, kami bekerja penuh dalam tahap pembangunan dan iterasi menjelang peluncuran di Breakpoint.  Momen peluncuran yang penuh percaya diri itu membuka jalan menuju tahap saat ini—kami telah menyerahkan framework ini kepada pengguna awal untuk dicoba, dieksplorasi, dan disempurnakan.

Menjelang akhir 2024, kami terus mendorong pertumbuhan framework ini dengan berfokus pada peningkatan fungsionalitas inti, keterlibatan komunitas untuk memperluas dukungan, serta identifikasi fungsi SPL dan dukungan pustaka Anchor yang diperlukan. Sasaran ini akan memungkinkan para pengembang utama berfokus pada peningkatan inti.

Menatap 2025, kami mempercepat pengembangan dengan meluncurkan Turbin3 Poseidon Cohort pertama pada akhir Q1 (pengumuman segera hadir). Inisiatif ini akan memajukan framework sekaligus berfokus pada pembuatan paket publik, tutorial, dan sumber daya edukasi lainnya. Tujuannya jelas: menjadikan Poseidon sebagai alat utama untuk mempercepat pengembangan program Solana dengan TypeScript.

Fitur Utama

Poseidon menawarkan beberapa fitur unggulan:

  • Pengembangan yang Lebih Sederhana: Antarmuka berbasis TypeScript meminimalkan kurva pembelajaran bagi pengembang web sehingga mereka dapat berfokus pada logika aplikasi alih-alih bergelut dengan Rust
  • Produktivitas Lebih Tinggi: Poseidon memungkinkan pengembang bekerja lebih efisien dengan menggunakan alat dan alur kerja yang sudah dikenal, sehingga mempercepat proses pengembangan
  • Keamanan dan Performa yang Lebih Baik: Framework ini memastikan bahwa kode Rust hasil transpilasi selaras dengan standar keamanan dan performa Solana yang ketat, sekaligus menjaga integritas program on-chain
  • Integrasi Mulus: Poseidon terintegrasi secara mulus dengan ekosistem Solana sehingga pengembang dapat memanfaatkan alat dan pustaka yang sudah tersedia

Arsitektur Sistem

Arsitektur Poseidon terdiri dari beberapa komponen utama:

  • Antarmuka Pemrograman Berbasis TypeScript: Lapisan ini menyediakan sintaks dan alat yang familier bagi pengembang untuk menulis program Solana
  • Mesin Transpilasi: Mesin ini mengonversi kode TypeScript menjadi kode Rust yang setara dengan memanfaatkan kemampuan sistem tipe dan fitur bahasa TypeScript
  • Pembuatan Kode Anchor: Kode Rust hasil transpilasi diproses lebih lanjut untuk menghasilkan program Anchor yang valid, yang dapat dikompilasi dan di-deploy ke jaringan Solana
  • Manajemen Akun: Poseidon menyediakan cara yang lebih praktis untuk mengelola akun dan data terkaitnya sehingga interaksi dengan blockchain Solana menjadi lebih mudah

Kasus Penggunaan

Poseidon dirancang untuk mempercepat pemahaman pengembang tentang model akun Solana, sehingga secara signifikan mengurangi waktu yang dibutuhkan pengembang baru untuk men-deploy program pertama mereka ke testnet. Karena tuntutan keamanan aplikasi blockchain yang ketat, saat ini Poseidon tidak cocok untuk membangun aplikasi mainnet kelas produksi. Calon engineer protokol Solana pada akhirnya perlu mempelajari Anchor dan Rust agar dapat memahami arsitektur dasar Solana dengan lebih baik.

Framework ini dapat digunakan untuk mengeksplorasi dan bereksperimen dengan beragam aplikasi terdesentralisasi, termasuk:

  • Keuangan Terdesentralisasi (DeFi): Mengembangkan aplikasi keuangan inovatif seperti protokol pinjaman, bursa terdesentralisasi, dan platform yield farming
  • Token yang Tidak Dapat Dipertukarkan (NFT): Membuat dan mengelola aset digital di blockchain Solana
  • Game: Mengembangkan game dan dunia virtual berbasis blockchain
  • Manajemen Rantai Pasok: Melacak dan memverifikasi asal-usul produk dan bahan

Pertama-tama, kami berfokus pada program fundamental yang menopang hampir setiap aplikasi blockchain: Counter, Vault, dan Escrow. Komponen inti ini menjadi dasar bagi banyak protokol sehingga merupakan titik awal yang sempurna.

Contoh Program Poseidon

Mari pelajari kode dan telaah secara mendetail contoh program brankas yang dibangun dalam TypeScript dengan Poseidon, dengan menguraikan program tersebut menjadi bagian-bagian penyusunnya. Kode lengkap untuk program ini dan program lainnya dapat ditemukan di repositori GitHub Poseidon.

Impor dan Deklarasi Program

Program didefinisikan sebagai class TypeScript dengan PROGRAM_ID statis yang menentukan ID program. Paket @solanaturbine/poseidon menyediakan tipe yang diperlukan untuk mendefinisikan instruksi, seperti tipe Rust (u8, u64, i8, i128, boolean, string), tipe SPL (Pubkey, AssociatedTokenAccount, Mint, TokenAccount, TokenProgram), dan tipe akun Anchor (Signer, UncheckedAccount, SystemAccount).

Kode
import { Account, Pubkey, Result, Signer, SystemAccount, SystemProgram, UncheckedAccount, u64, u8 } from "@solanaturbine/poseidon";

export default class VaultProgram {
    static PROGRAM_ID = new Pubkey("11111111111111111111111111111111");

Instruksi

Biasanya, kami mendefinisikan metode di dalam class program untuk menentukan instruksi dengan Poseidon. Konteks setiap instruksi tersirat dalam parameter metode. Untuk mendefinisikan akun sebagai program derived address (PDA) dengan @solanaturbine/poseidon, kami menggunakan metode derive untuk menentukan seed sebagai parameter pertama di dalam sebuah array.

Kode
    initialize(
        owner: Signer,
        state: Vault,
        auth: UncheckedAccount,
        vault: SystemAccount
    ): Result {

        auth.derive(['auth', state.key])
        state.derive(['state', owner.key]).init(owner)
        vault.derive(['vault', auth.key])

        // assign an argument of type Pubkey by calling the key property
        state.owner = owner.key;

        // to store bumps in the custom_Acc(state), we can simply call getBump
        state.stateBump = state.getBump()
        state.authBump = auth.getBump()
        state.vaultBump = vault.getBump()
    }

    deposit(
        owner: Signer,
        state: Vault,
        auth: UncheckedAccount,
        vault: SystemAccount,
        amount: u64
    ) {
        state.deriveWithBump(['state', owner.key], state.stateBump)
        auth.deriveWithBump(['auth', state.key], state.authBump)
        vault.deriveWithBump(['vault', auth.key], state.vaultBump)

        SystemProgram.transfer(
            owner, // from
            vault, // to
            amount // amount to be sent
        )
    }

    withdraw(
        owner: Signer,
        state: Vault,
        auth: UncheckedAccount,
        vault: SystemAccount,
        amount: u64
    ) {
        state.deriveWithBump(['state', owner.key], state.stateBump)
        auth.deriveWithBump(['auth', state.key], state.authBump)
        vault.deriveWithBump(['vault', auth.key], state.vaultBump)

        SystemProgram.transfer(
            vault,
            owner,
            amount,
            ['vault', state.key, state.authBump]
        )
    }
}

Status Akun

Akun status kustom didefinisikan sebagai interface yang meng-extend Account. Field akun status kustom dapat didefinisikan menggunakan tipe dari paket @solanaturbine/Poseidon.

Kode
export interface Vault extends Account {
    owner: Pubkey
    stateBump: u8
    authBump: u8
    vaultBump: u8
}

Dampak Poseidon

Poseidon berpotensi memengaruhi lanskap pengembangan blockchain dengan:

  • Memperluas Komunitas Pengembang Solana: Menarik lebih banyak pengembang ke ekosistem Solana
  • Mempercepat Pengembangan: Mengurangi waktu dan upaya pengembangan untuk proyek Solana
  • Meningkatkan Pengalaman Pengembang: Menyediakan pengalaman pengembangan yang lebih intuitif dan efisien

Arah Pengembangan Mendatang

Pada masa mendatang, Poseidon bertujuan untuk semakin meningkatkan kemampuannya dengan:

  • Memperluas Dukungan Bahasa: Mendukung bahasa tambahan seperti JavaScript dan Python
  • Meningkatkan Performa: Mengoptimalkan proses transpilasi dan kode Rust yang dihasilkan
  • Meningkatkan Keamanan: Menguji framework dan kode yang dihasilkan secara ketat untuk menemukan kerentanan

Kesimpulan

Poseidon menandai kemajuan besar dalam membuat pengembangan program Solana dapat diakses oleh lebih banyak orang. Dengan menjembatani kesenjangan antara pengembangan web dan pemrograman blockchain, Poseidon memungkinkan pengembang membuat aplikasi yang inovatif dan berdampak di blockchain Solana. Seiring berkembangnya dunia blockchain, Poseidon berpotensi menjadi alat penting bagi pengembang Solana baru.

Sumber Daya Tambahan

‍

Berlangganan Helius

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

Gambar diperbesar