BARU: Helius mengakuisisi Light Protocol
cara menggunakan AI untuk membangun aplikasi Solana
Blog/Dasar-Dasar

Cara Menggunakan AI untuk Membangun Aplikasi Solana

Engineer IntegrasiGuney di XGuney di LinkedIn
Bacaan 17 menit
Daftar Isi

    Kecerdasan Buatan (AI) mengubah cara kita membangun perangkat lunak.

    AI dapat menemukan dan memperbaiki bug, membuat fitur baru, serta menangani sejumlah tugas yang enggan kita lakukan. Alat seperti Copilot dan Cursor membuat proses coding lebih cepat dan tidak terlalu membosankan. Namun, alat tersebut tidak selalu berfungsi baik dengan Solana.

    Arsitektur Solana membedakannya dari sebagian besar blockchain. Solana memproses transaksi secara paralel, mengandalkan akun alih-alih state yang dimiliki kontrak, dan menggunakan Program-Derived Addresses (PDA) untuk keamanan tambahan.

    Jika Anda pernah membaca postingan blog kami, Anda akan tahu bahwa membangun di Solana berbeda dengan di Ethereum. Solana menawarkan throughput tinggi dan memiliki pendekatan unik terhadap pengelolaan akun. Perbedaan ini sering membingungkan model AI yang dilatih dengan pola coding berbeda.

    Artikel ini akan membahas mengapa AI terkadang kesulitan dengan Solana. Artikel ini juga memberikan cara untuk menghindari masalah tersebut. Fokus utama kami adalah:

    • Prompt engineering: Menulis instruksi yang lebih baik untuk AI.
    • Input kontekstual: Memberikan detail proyek Anda agar output AI lebih akurat.
    • Alur kerja iteratif: Bangun kode dalam langkah-langkah kecil. Periksa dan sempurnakan sebelum melanjutkan.

    Baik Anda pemula maupun berpengalaman, kiat-kiat ini akan membantu Anda mendapatkan manfaat lebih besar dari AI saat bekerja dengan Solana.

    Tantangan Pengembangan AI Solana

    Arsitektur dan persyaratan unik Solana dapat menimbulkan masalah bagi AI. Jika AI tidak mempertimbangkannya, Anda akan membuang waktu untuk melakukan debugging kode atau menulis ulang program, sehingga tujuan penggunaan AI untuk menyederhanakan pengembangan menjadi sia-sia.

    Arsitektur Unik Solana

    Solana memiliki tiga perbedaan utama:

    1. Model Berbasis Akun

    Banyak blockchain, seperti Ethereum, mengaitkan data secara langsung dengan penyimpanan internal smart contract. Sebaliknya, model pemrograman Solana mengatur semuanya di sekitar "akun". Akun ini menyimpan data, sementara "program" (padanan smart contract di Solana) mengubah dan berinteraksi dengan data tersebut. 

    Perbedaan utamanya adalah bahwa di Solana, semuanya merupakan akun, termasuk program itu sendiri. Program hanyalah akun yang menyimpan data yang dapat dieksekusi, sehingga dapat memproses instruksi. Sebaliknya, Ethereum membedakan externally owned accounts (EOA), yang dikendalikan oleh private key, dari smart contract, yang memiliki kode dan penyimpanan internalnya sendiri. 

    Perbedaan mendasar ini dapat menimbulkan kesalahpahaman, terutama saat menulis kode untuk Solana. Seperti halnya smart contract Ethereum, developer yang belum memahami model akun mungkin keliru menganggap bahwa program dapat memiliki datanya sendiri. Asumsi semacam ini dapat menyebabkan error runtime atau kerentanan keamanan saat melakukan deployment di Solana.

    2. Program Derived Addresses (PDA)

    Program-Derived Address (PDA) dibuat dari ID program dan seed. PDA memungkinkan program mengatur akun tanpa memerlukan private key. Namun, model AI mungkin tidak memahami perbedaan antara alamat standar dan PDA. Jika model lupa menangani seed atau memeriksa kepemilikan, PDA tersebut mungkin benar sebagai kode Rust, tetapi tidak benar sebagai kode Solana.

    3. Eksekusi Paralel

    Runtime Solana, Sealevel, memungkinkannya memproses transaksi secara paralel, tidak seperti blockchain tradisional yang menangani transaksi satu per satu. Hal ini dimungkinkan karena transaksi menentukan akun mana yang akan dibaca dan ditulis. Dengan informasi ini, Solana dapat menentukan akun mana yang perlu dikunci dan mengeksekusi banyak transaksi secara bersamaan dengan aman. 

    AI sering salah memahami model ini. AI mungkin berasumsi bahwa transaksi akan berjalan secara berurutan, seperti di Ethereum Virtual Machine (EVM). Hal ini dapat menghasilkan kode yang tidak dioptimalkan untuk paralelisme. Karena sistem penguncian berbasis akun Solana berbeda dari pendekatan EVM, AI mungkin menulis kode yang berkinerja buruk atau sulit diskalakan.

    Masalah yang Sering Terjadi

    Ada beberapa masalah berulang yang dihadapi developer saat menggunakan AI untuk membangun aplikasi Solana:

    1. Kode yang Salah

    AI mungkin menghasilkan fungsi yang berhasil dikompilasi di Rust, tetapi gagal saat Anda melakukan deployment ke Solana. Misalnya, alat pair programming AI dapat melewatkan signer atau salah memahami referensi akun. Hasilnya? Bug atau kerentanan keamanan yang baru terlihat ketika Anda menjalankan pengujian, transaksi aktual, atau audit keamanan lengkap.

    2. Kode yang Tidak Optimal

    Meskipun kode yang dihasilkan AI berfungsi, kode tersebut mungkin tidak dioptimalkan untuk compute unit, dapat memperlambat pemrosesan transaksi, atau menimbulkan bottleneck tersembunyi yang tidak terlihat. Bayangkan AI menulis fungsi untuk memperbarui akun satu per satu. AI gagal mengenali bahwa Solana dapat menanganinya secara bersamaan jika diimplementasikan dengan benar.

    3. Debugging yang Sulit

    Model AI tidak mengetahui struktur folder atau cara Anda mendefinisikan tipe data khusus kecuali Anda menjelaskannya. Artinya, AI mungkin mengusulkan solusi yang bertentangan dengan konfigurasi Anda, dan menggabungkan solusi tersebut kembali ke proyek dapat merepotkan.

    Gunakan Alat AI Helius untuk Meluncurkan Aplikasi Solana Lebih Cepat

    Seperti dijelaskan di atas, menggunakan AI untuk membangun dengan benar di Solana bukanlah hal yang mudah. 

    Untuk mengubahnya, kami membangun rangkaian alat developer AI Solana yang menangani bagian sulit untuk Anda: mengarahkan ke alat yang tepat, menerapkan praktik terbaik, dan memberikan fondasi yang dibutuhkan agen AI Anda untuk beralih dari satu prompt menjadi aplikasi siap produksi.

    Helius MCP Server

    Helius MCP Server dibangun berdasarkan standar Model Context Protocol (MCP) terbuka milik Anthropic dan menyediakan lebih dari 60 alat terstruktur—termasuk getBalance, parseTransaction, getAssetsByOwner, dan createWebhook—untuk semua klien yang kompatibel dengan MCP (Claude Desktop, Cursor, VS Code, Windsurf, dan lainnya).

    Alih-alih menyusun perintah curl mentah dan mengurai output JSON, agen membuat pemanggilan alat bertipe dan langsung menerima respons terstruktur. Ini membuat setiap interaksi API lebih cepat, lebih andal, dan jauh lebih minim error.

    Anda dapat menambahkannya ke Claude Code dengan satu perintah:

    Kode
    claude mcp add helius npx helius-mcp@latest

    Helius Skills

    Akses ke lebih dari 60 alat tidak berguna jika agen tidak tahu cara menggunakannya.https://www.helius.dev/blog/helius-for-agents#helius-skills-the-brain

    Skills adalah kumpulan instruksi ahli—prompt yang dirancang dengan cermat, lengkap dengan logika routing dan file referensi—yang mengajarkan agen cara menjadi developer Solana ahli.

    Dengan skill yang dimuat, agen tahu untuk menggunakan searchAssets alih-alih getProgramAccounts dalam pencarian NFT, mengambil priority fee secara dinamis, dan mengarahkan transaksi melalui Sender untuk tingkat keberhasilan landing tertinggi. 

    Kami meluncurkan empat skill:

    • Build – Pengembangan inti Solana di seluruh API Helius
    • DFlow – Aplikasi perdagangan yang menggunakan API DFlow
    • Phantom – Membuat frontend untuk dApp menggunakan Phantom Connect SDK
    • SVM – Pemahaman mendalam tentang bagian internal protokol Solana

    Skills tidak bergantung pada model tertentu dan berfungsi dengan OpenAI API, Claude API, Cursor Rules, serta instruksi khusus ChatGPT.

    Untuk berkontribusi dengan sebuah skill, silakan isi formulir ini.

    Helius CLI

    Helius CLI adalah antarmuka command-line berfitur lengkap dengan lebih dari 95 perintah yang mencakup pengelolaan akun, pengiriman transaksi, pengelolaan webhook, streaming real-time, staking, ZK Compression, dan lainnya. 

    Anda dapat menggunakannya secara langsung atau membiarkan agen mengoperasikannya — setiap perintah mendukung output --json dan exit code terstruktur, sehingga agen dapat dengan mudah mengurai respons dan menangani error secara terprogram.

    Instal Helius CLI seperti berikut:

    Kode
    npm install -g helius-cli

    Helius Claude Code Plugin

    Claude Code Plugin menggabungkan Helius MCP, DFlow MCP, keempat skill, dan file referensi mendalam untuk setiap produk Helius dalam satu instalasi — tanpa konfigurasi MCP manual dan tanpa penyiapan skill terpisah.

    Berikut cara menginstalnya:

    Kode
    /plugin marketplace add helius-labs/core-ai
    /plugin install helius@helius-labs

    Setelah diinstal, satu prompt seperti "Buat CLI pelaporan pajak untuk wallet ini" akan menghasilkan aplikasi CLI dengan paginasi yang berfungsi penuh — tanpa memerlukan prompt perantara.

    Secara bersama-sama, alat-alat ini memberi agen AI akses ke alat dan pengetahuan domain yang diperlukan untuk melewati fase coba-coba serta menghasilkan kode Solana yang benar dan optimal sejak prompt pertama.

    Kiat Pengembangan AI Solana

    Ikuti rekomendasi berikut untuk membangun aplikasi Solana menggunakan AI:

    1. Mulai dengan Prompt yang Kuat

    System prompt ibarat deskripsi pekerjaan AI. Prompt ini menjelaskan peran AI (misalnya, "Anda adalah ahli pemrograman Solana menggunakan Anchor...”) dan menguraikan aturan yang Anda ingin AI ikuti.

    Berikut contoh umum yang sedikit diperluas:

    Kode
    # You are an expert in Solana program development.
    Specializing in building and deploying smart contracts using Rust and Anchor,
    and integrating on-chain data with @solana/web3.js.
    
    ---
    
    ## General Guidelines
    - Write secure, efficient, and maintainable code for Solana programs.
    - Thoroughly test and audit all programs before deployment.
    
    ## Solana Program Development with Rust and Anchor
    - Prioritize Rust's safety and performance.
    - Use Anchor macros to simplify account management, error handling, and
      data serialization.
    - Keep code modular and maintain a clear separation between logic and data.
    
    ## Security and Best Practices
    - Enforce strict access controls--ensure only permitted signers can modify data.
    - Use PDAs responsibly: validate seeds and ownership checks to prevent conflicts.
    
    ## Performance and Optimization
    - Minimize transaction costs by bundling operations efficiently.
    - Exploit parallelism--don't serialize steps unnecessarily.
    - Regularly benchmark your code to spot and remove performance

    Mengapa Ini Berhasil

    System prompt yang ditulis dengan baik berfungsi seperti cetak biru yang menyelaraskan AI dengan arsitektur Solana. Ini memastikan setiap respons akurat, aman, dan disesuaikan dengan kebutuhan Anda.

    1. Menetapkan konteks yang tepat: Menyatakan AI sebagai "ahli Solana" memastikan AI berfokus pada fitur khusus Solana seperti PDA, paralelisme, dan Anchor, bukan membuat asumsi blockchain yang umum.
    2. Menghasilkan kode yang konsisten: Menyertakan praktik terbaik seperti kontrol akses ketat dan eksekusi paralel memandu AI untuk membuat output yang aman, andal, dan dapat diprediksi.
    3. Menghindari kesalahan umum: Menekankan keamanan Rust, makro Anchor, dan serialisasi akan mengurangi error. Ini menghemat waktu Anda untuk melakukan debugging dan menulis ulang kode.
    4. Memaksimalkan keunggulan Solana: AI harus meningkatkan bandwidth dan mengurangi latensi. Ini akan mengoptimalkan kode untuk throughput dan efisiensi tinggi Solana.

    2. Tulis Prompt yang Jelas

    Saat meminta AI menghasilkan kode, presisi sangatlah penting. Makin spesifik permintaan Anda, makin baik hasilnya. Bandingkan contoh berikut:

    Prompt Buruk:

    "Tulis fungsi untuk menginisialisasi akun."

    Prompt ini terlalu samar. AI tidak mengetahui bahasa pemrograman, framework, atau bahwa prompt ini ditujukan untuk kode Solana. AI mungkin memberikan kode yang generik atau tidak berguna.

    Prompt yang Baik:

    "Tulis fungsi dalam Rust menggunakan Anchor untuk menginisialisasi akun token Solana. Gunakan PDA yang diturunkan dari seed. Validasi state akun dan tangani error jika akun sudah diinisialisasi."

    Berikut alasan prompt yang baik tersebut berhasil:

    Prompt yang jelas membantu menghemat waktu dan tenaga. Dengan memperjelas tujuan AI, Anda mencegah perlunya perbaikan di kemudian hari akibat kode yang ceroboh, tidak jelas, atau melenceng dari tujuan. Prompt yang jelas juga meminimalkan kesalahpahaman sehingga pekerjaan dengan AI menjadi lebih efektif. 

    1. Jelas dan langsung: Dengan menyebut Rust, Anchor, dan PDA secara langsung, AI mengetahui alat dan fitur yang harus digunakan. AI tidak perlu menebak atau menyertakan detail yang tidak relevan.
    2. Berfokus pada kebutuhan Solana: Menyebut PDA memberi tahu AI untuk menyertakan logika khusus Solana. Tanpa ini, kode mungkin melewatkan langkah penting seperti menurunkan alamat secara aman.
    3. Menambahkan detail saat diperlukan: Instruksi validasi dan penanganan error meminta AI melampaui hal-hal mendasar. Ini membantu memastikan kode berfungsi dalam skenario nyata.

    Prompt yang baik ibarat peta yang memandu AI dan membantunya menghindari kendala untuk mencapai tujuan.

    3. Berikan Konteks yang Tepat

    AI bekerja lebih baik jika Anda memberikan konteks yang tepat. Banyak alat memungkinkan Anda mengunggah kode atau menautkan file. Ini membantu AI memahami proyek Anda dan membuat solusi yang sesuai dengan codebase Anda. 

    Namun, jangan membebaninya secara berlebihan. Memberikan terlalu banyak informasi kepada AI, seperti seluruh codebase yang besar, dapat membuatnya berhalusinasi atau menghasilkan respons yang tidak relevan. 

    Sebaliknya, fokuslah pada bagian kode yang relevan. Ini menjaga fokus AI dan meningkatkan kualitas sarannya.

    Sebagai contoh, bayangkan aplikasi Anda sudah memiliki file yang mendefinisikan struktur data khusus:

    Kode
    #[account]
    pub struct TokenAccount {
        pub balance: u64,
        pub is_initialized: bool,
        // ... more fields
    }

    Jika Anda mengunggah file ini atau menyertakannya sebagai bagian dari input, AI dapat menggunakan nama field yang sama persis (balance, is_initialized) dalam kode yang dihasilkannya.

    AI juga dapat menyelaraskan sarannya dengan struktur dan konvensi proyek Anda.

    Mengapa pemberian konteks berhasil

    1. Meningkatkan akurasi: Tanpa konteks, AI mungkin menebak nama field, memperkenalkan perubahan yang tidak perlu, atau mengasumsikan tipe data yang salah. Misalnya, AI mungkin menamai field saldo Anda amount atau menggunakan f64 alih-alih u64. Memberikan struct yang sebenarnya akan menghilangkan dugaan ini.
    2. Menjaga konsistensi kode: Ketika AI memahami konvensi penamaan Anda, AI menghasilkan kode yang menyatu secara alami dengan proyek Anda. Ini menghindarkan Anda dari kerepotan mengganti nama variabel atau mengerjakan ulang kode agar sesuai dengan pola yang sudah ada.
    3. Mengurangi pekerjaan integrasi: Jika AI melihat struktur akun Anda, AI dapat menyesuaikan output agar terintegrasi langsung dengannya. Ini mencegah situasi ketika kode buatan AI memerlukan penulisan ulang besar-besaran agar sesuai dengan logika yang sudah ada.

    Contoh: Cara Menambahkan Konteks untuk Meningkatkan Output AI

    Tanpa konteks yang tepat, prompt seperti “Tulis fungsi untuk memperbarui saldo akun token” mungkin menghasilkan kode AI seperti berikut:

    Kode
    pub fn update_balance(ctx: Context<UpdateAccount>, amount: f64) -> Result<()> {
        let account = &mut ctx.accounts.token_account;
        account.amount += amount;
        Ok(())
    }

    Kode ini memiliki dua masalah:

    Pertama, kode ini menggunakan f64 untuk amount, bukan u64. 

    Solana memiliki dukungan yang sangat terbatas untuk aritmetika floating-point native. Pendekatan yang lebih disarankan adalah menggunakan aritmetika fixed-point dan menskalakan angka berdasarkan desimal yang digunakan. Ini menghindari masalah performa dan kompatibilitas.

    Kedua, kode ini menamai field saldo sebagai amount, yang tidak sesuai dengan struct Anda. Hal ini dapat menimbulkan kebingungan dan bug di kemudian hari.

    Sekarang, jika Anda memberikan struct TokenAccount sebagai konteks, AI mungkin menghasilkan kode berikut:

    Kode
    pub fn update_balance(ctx: Context<UpdateAccount>, amount: u64) -> Result<()> {
        let token_account = &mut ctx.accounts.token_account;
        token_account.balance += amount;
        Ok(())
    }

    Output ini jauh lebih sesuai dengan proyek Anda. 

    Namun, meskipun sudah lebih baik, sebaiknya tambahkan pemeriksaan overflow pada operasi token_account.balance += amount untuk memastikan kode Anda tangguh dan aman.

    Cara Memberikan Konteks

    Ingat langkah-langkah berikut untuk memberikan konteks yang tepat kepada alat AI Anda:

    1. Unggah file: Jika alat AI Anda mendukungnya, unggah definisi struct, skema akun, dan file proyek lainnya.
    2. Referensikan kode dalam prompt: Salin dan tempel cuplikan yang relevan ke prompt agar AI dapat menggunakannya sebagai referensi.
    3. Jelaskan strukturnya: Jika tidak dapat mengunggah, jelaskan data Anda dengan jelas dalam prompt. Misalnya, “Saya memiliki struct bernama TokenAccount dengan field balance (u64) dan is_initialized (bool).”

    4. Kembangkan Kode yang Sudah Ada

    Anda tidak perlu selalu memulai dari nol. Sering kali, Anda sudah memiliki kode yang berfungsi tetapi masih dapat ditingkatkan. AI dapat membantu menyempurnakannya. Berikut contohnya:

    Berikut kode aslinya:

    Kode
    pub fn create_token_account(ctx: Context<CreateAccount>) -> Result<()> {
        let token_account = &mut ctx.accounts.token_account;
        token_account.balance = 0;
        Ok(())
    }

    Kode ini menginisialisasi akun token dan mengatur saldo menjadi nol. Kode ini sederhana, tetapi tidak menangani skenario seperti memperbarui akun yang sudah ada atau memeriksa kepemilikan.

    Prompt Anda:

    "Buat fungsi ini lebih tangguh. Jika akun token sudah ada, tambahkan jumlahnya ke saldo. Jika belum, inisialisasi dengan jumlah tertentu. Pastikan juga akun dimiliki oleh program saat ini."

    Berikut kode yang dihasilkan AI setelah prompt Anda:

    Kode
    pub fn create_or_update_token_account(
        ctx: Context<CreateAccount>,
        amount: u64
    ) -> Result<()> {
        let token_account = &mut ctx.accounts.token_account;
    
        // Check ownership
        if token_account.owner != ctx.program_id {
            return err!(ProgramError::IncorrectProgramId);
        }
    
        // Update or initialize
        if token_account.is_initialized {
            token_account.balance += amount;
        } else {
            token_account.balance = amount;
            token_account.is_initialized = true;
        }
    
        Ok(())
    }

    Mengapa Ini Berhasil

    1. Menangani skenario umum: Kode baru menangani akun yang sudah dan belum diinisialisasi sehingga lebih berguna dalam aplikasi nyata.
    2. Menambahkan validasi kepemilikan: Ini mencegah perubahan tanpa izin karena program memeriksa apakah akun tersebut merupakan miliknya.
    3. Membuat fungsi lebih cerdas: Fungsi kini dapat memperbarui saldo alih-alih selalu mengaturnya kembali ke nol. Ini mengurangi redundansi dan sesuai dengan kasus penggunaan nyata.
    4. Menghemat waktu: Anda tidak perlu menulis ulang seluruh fungsi. AI mengembangkan kode yang sudah ada sehingga Anda dapat lebih cepat mengubah fungsi dasar menjadi fungsi yang tangguh.

    Cara Menggunakan Pendekatan Ini

    Ingat langkah-langkah berikut untuk menggunakan pendekatan ini di kemudian hari:

    1. Mulai dengan dasar yang berfungsi: Identifikasi fungsi atau cuplikan yang berfungsi tetapi masih dapat ditingkatkan.
    2. Buat prompt yang spesifik: Jelaskan hal yang ingin ditingkatkan, seperti menambahkan pemeriksaan error, menangani edge case, atau memperbaiki logika.
    3. Tinjau saran AI: Periksa output AI untuk memastikan kode sesuai dengan proyek Anda dan mengikuti praktik terbaik Solana.
    4. Lakukan iterasi sesuai kebutuhan: Jika output pertama belum sempurna, sesuaikan prompt atau edit kode agar lebih mendekati tujuan Anda.

    5. Lakukan Iterasi Satu Langkah demi Satu

    Membangun kode langkah demi langkah membantu Anda menghindari kesalahan dan menyempurnakan pekerjaan seiring proses berjalan. Alih-alih mencoba membuat fungsi kompleks sekaligus, pecah menjadi tugas-tugas yang lebih kecil. Dengan demikian, setiap bagian lebih mudah diuji dan ditingkatkan sebelum melanjutkan.

    Contoh Alur Kerja

    Mari mulai dari hal kecil. Minta AI membuat fungsi sederhana untuk menghitung Program Derived Address (PDA) menggunakan seed.

    Berikut contoh prompt:

    "Tulis fungsi Rust yang menghitung PDA dari seed dan ID program menggunakan Anchor."

    Output AI:

    Kode
     pub fn find_pda(seed: &[u8], program_id: &Pubkey) -> Pubkey {
        Pubkey::create_program_address(&[seed], program_id).unwrap()
    }

    Ini adalah titik awal yang baik, tetapi belum lengkap. Mari tambahkan penanganan error.

    Tinjau kode dan identifikasi masalah. Misalnya, penggunaan unwrap() dapat menyebabkan program crash jika seed tidak valid.

    Minta AI memperbaikinya:

    "Perbarui fungsi ini untuk menyertakan penanganan error bagi seed yang tidak valid. Kembalikan Result alih-alih melakukan unwrapping."

    Kode yang Diperbarui:

    Kode
     pub fn find_pda(seed: &[u8], program_id: &Pubkey) -> Result<Pubkey, ProgramError> {
        Pubkey::create_program_address(&[seed], program_id)
            .map_err(|_| ProgramError::InvalidSeeds)
    }

    Kini fungsi menangani seed yang tidak valid dengan baik dengan mengembalikan error alih-alih mengalami panic.

    Selanjutnya, mari integrasikan fungsi tersebut. 

    Minta AI menggunakan fungsi PDA dalam rutin yang lebih besar. Misalnya:

    "Tulis fungsi yang menggunakan PDA ini untuk membuat akun token baru. Validasi bahwa PDA belum digunakan."

    Berikut output AI:

    Kode
    pub fn create_token_account(ctx: Context<CreateAccount>, seed: &[u8], amount: u64) -> Result<()> {
        let program_id = ctx.program_id;
        let pda = find_pda(seed, &program_id)?;
    
        if ctx.accounts.token_account.key != pda {
            return Err(ProgramError::InvalidSeeds);
        }
    
        if !ctx.accounts.token_account.is_initialized {
            let token_account = &mut ctx.accounts.token_account;
            token_account.balance = amount;
            token_account.is_initialized = true;
        }
    
        Ok(())
    }

    Langkah ini mengintegrasikan logika PDA ke dalam pembuatan akun sekaligus memastikan PDA tidak digunakan kembali secara keliru.

    Sekarang, mari optimalkan dan selesaikan kodenya. Minta AI menyempurnakan fungsi lebih lanjut dengan prompt seperti:

    "Optimalkan fungsi ini untuk meminimalkan biaya transaksi dan sertakan validasi kepemilikan."

    Berikut output AI:

    Kode
    pub fn create_token_account(ctx: Context<CreateAccount>, seed: &[u8], amount: u64) -> Result<()> {
        let program_id = ctx.program_id;
        let pda = find_pda(seed, &program_id)?;
    
        if ctx.accounts.token_account.key != pda || ctx.accounts.token_account.owner != program_id {
            return Err(ProgramError::IncorrectProgramId);
        }
    
        if !ctx.accounts.token_account.is_initialized {
            let token_account = &mut ctx.accounts.token_account;
            token_account.balance = amount;
            token_account.is_initialized = true;
        }
    
        Ok(())
    }

    Fungsi final kini efisien, aman, dan sesuai dengan praktik terbaik Solana.

    Mengapa Pendekatan Ini Berhasil

    1. Menjaga pekerjaan tetap mudah dikelola: Berfokus pada satu tugas kecil dalam satu waktu mencegah AI kewalahan. Setiap langkah melanjutkan langkah sebelumnya sehingga lebih mudah diuji dan disempurnakan.
    2. Menemukan error lebih awal: Dengan langkah yang lebih kecil, Anda dapat menemukan masalah sebelum berdampak pada kode lainnya. Misalnya, menambahkan penanganan error sejak awal akan mencegah crash di kemudian hari.
    3. Mendorong iterasi: Jika sesuatu tidak berfungsi dengan sempurna, Anda dapat menyesuaikan fungsi tanpa mengerjakan ulang seluruh codebase.
    4. Menghasilkan kode yang lebih baik: Setiap penyempurnaan membuat kode lebih tangguh, sehingga pada akhirnya Anda memperoleh solusi yang lebih andal dan mudah dipelihara.

    Cara Menggunakan Pendekatan Ini

    Ingat kiat-kiat berikut saat Anda melakukan pair programming dengan AI:

    1. Pecah tugas menjadi langkah-langkah kecil: Alih-alih meminta satu fungsi kompleks, pecah menjadi tugas yang lebih sederhana dan mudah dikelola, lalu kerjakan satu per satu.
    2. Uji hasil setelah setiap langkah: Jalankan kode setelah setiap perubahan untuk memastikan kode berfungsi. Jika tidak, perbaiki masalah atau sesuaikan prompt sebelum melanjutkan ke langkah berikutnya.
    3. Sempurnakan selama proses berlangsung: Jangan membatasi diri pada satu hasil. Minta AI mengoptimalkan atau menambahkan fitur seperti validasi, peningkatan performa, atau penanganan error yang lebih baik.

    Kesimpulan

    Menggunakan AI untuk membangun di Solana dapat menjadi sangat efektif jika Anda menerapkan pendekatan yang cermat dan penuh pertimbangan. Arsitektur Solana berbeda dari blockchain lainnya, termasuk penggunaan PDA, pemrosesan transaksi paralel, dan desain berbasis akun. Artinya, Anda harus mengarahkan AI dengan benar.

    Mulailah dengan prompt yang jelas. Beri tahu AI dengan tepat apa yang Anda inginkan dan jelaskan secara spesifik alat seperti Rust, Anchor, dan PDA. Prompt yang baik dapat berbunyi:

    “Tulis fungsi Rust untuk menginisialisasi akun token Solana dengan PDA, memvalidasi state akun, dan menangani error.”

    Kejelasan ini memperbesar peluang AI menghasilkan kode yang berfungsi untuk Solana.

    Selalu berikan konteks. Bagikan kode proyek Anda atau jelaskan struktur yang digunakan, seperti skema akun atau tipe data. Misalnya, jika Anda memiliki struct TokenAccount, sertakan detailnya agar AI dapat menyelaraskan output. Namun, jangan membebaninya secara berlebihan. Fokuslah pada bagian yang relevan agar saran tetap akurat dan bermanfaat.

    Pecah tugas menjadi langkah-langkah kecil. Gunakan proses iteratif untuk menyempurnakan kode seiring proses berjalan. Mulailah dengan tugas sederhana, seperti menghitung PDA, lalu lanjutkan dengan penanganan error atau validasi akun. Lakukan pengujian setelah setiap langkah. Dengan cara ini, Anda dapat menemukan masalah lebih awal dan terus melangkah dengan stabil.

    Terakhir, periksa pekerjaan AI dengan cermat. Kode yang dihasilkan AI sering kali masih memiliki masalah kecil, seperti tidak adanya pemeriksaan overflow atau validasi yang terlewat. Pastikan output mengikuti aturan Solana, bebas bug, dan memanfaatkan kemampuan eksekusi paralel.

    AI hanyalah titik awal; Anda harus menyelesaikan pekerjaannya. Dengan instruksi yang jelas, konteks, pengembangan langkah demi langkah, dan peninjauan cermat, Anda dapat menggunakan AI untuk membuat program Solana yang aman dan optimal. Tetaplah terlibat dalam prosesnya, dan AI akan menjadi alat berharga yang membantu Anda menghemat waktu dan menulis kode yang lebih baik.

    Bacaan Tambahan

    Untuk mempelajari lebih lanjut cara membangun dengan AI di Solana, jelajahi referensi berikut:

    1. Anthropic: Ringkasan Prompt Engineering
    2. AWS: Teknik Prompt Engineering
    3. Mengoptimalkan Program Solana
    4. Cara Mengoptimalkan Penggunaan Compute di Solana
    5. Dokumentasi Anchor

    Berlangganan Helius

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