Menu
CoddyTech

Compiler Solidity Online & Playground

Tulis, jalankan, dan bagikan potongan kode. Tanpa setup.

Contract.sol
Klik Jalankan untuk melihat output di sini.
ArgumenNilai yang diteruskan ke fungsi main(...) di kontrakmu. Runner melakukan ABI-encode berdasarkan tipe parameternya.
Tidak ada argumen. Klik "Tambah argumen" untuk menambahkannya.

Coba Solidity di browser

Solidity adalah bahasa untuk smart contract Ethereum. Bahasa ini berjalan di EVM, mesin virtual yang sama yang mengamankan ratusan miliar dolar di mainnet dan menjalankan sebagian besar L2. Playground ini memberimu editor Monaco yang tersambung ke solc + EVM geth yang ter-sandbox, jadi kamu bisa menulis contract, menekan Jalankan, dan melihat persis apa yang akan terjadi on-chain: output console.log, event yang di-emit, dan nilai akhir variabel storage-mu, tanpa men-deploy apa pun, membayar gas, atau menyentuh wallet.

Solidity tidak biasa dalam beberapa hal yang perlu kamu perhatikan saat mulai. Storage bersifat permanen secara bawaan: apa pun yang di-assign ke state variable akan bertahan, sedangkan apa pun di dalam fungsi hilang saat panggilannya selesai. Event adalah cara contract berbicara dengan dunia luar (frontend-mu, indexer-mu, The Graph): event memakan gas, ditulis ke log transaksi, dan bisa difilter berdasarkan parameter yang di-index. Selain itu, setiap fungsi external menerima input-nya lewat ABI encoding, bukan stdin, jadi playground ini menyediakan panel Argumen bertipe yang langsung tersambung ke parameter main(...) milikmu.

Keunggulan playground Solidity ini

  • Eksekusi solc + EVM sungguhan, bukan simulasi transpiler. console.log memakai forge-std, dan jalur emit / storage melewati semantik EVM yang sebenarnya: opcode, gas, semuanya.
  • Tab Event menampilkan setiap emit dari eksekusimu, dengan parameter indexed yang ditandai secara terpisah, jadi kamu bisa melihat persis apa yang akan diterima frontend atau subgraph.
  • Tab Storage menampilkan nilai akhir setiap state variable yang disentuh contract, termasuk entri mapping (misalnya balances[0xabc...]). Variabel yang tidak kamu tulis tidak muncul.
  • Panel Argumen bertipe mengirim nilai ke main(uint256 n, string memory name, ...) yang berparameter. Runner melakukan ABI encoding berdasarkan signature fungsimu, jadi 42 menjadi uint256 dan "hello" menjadi string.

Yang bisa kamu buat di playground Solidity

  • Contract counter / increment-decrement untuk mempelajari bagaimana state variable bertahan di antara panggilan: tulis ke count, jalankan, lalu lihat nilainya muncul di tab Storage.
  • Pola aliran token: emit Transfer(from indexed, to indexed, value) dan lihat field indexed dan non-indexed ditampilkan secara berbeda di tab Event, sama seperti kemunculannya di topic log EVM sungguhan.
  • Kasus gagal require / revert: tulis guard yang gagal saat input-nya buruk dan lihat pesan revert muncul di stdout, alih-alih membakar gas untuk transaksi yang gagal di mainnet.

Pertanyaan yang sering diajukan tentang Solidity

Apa itu Solidity?

Solidity adalah bahasa smart contract yang paling banyak dipakai untuk Ethereum dan chain yang kompatibel dengan EVM (Polygon, Arbitrum, Optimism, Base, dan lainnya). Solidity dikompilasi menjadi bytecode EVM, yaitu set instruksi mesin stack yang dieksekusi oleh setiap node di jaringan. Secara sintaks, Solidity meminjam dari JavaScript dan C++, tapi semantiknya sangat berbeda: storage mahal dan permanen, setiap panggilan diukur dengan gas, dan tidak ada async. Playground ini memberimu EVM ter-sandbox supaya kamu bisa berlatih bahasanya tanpa menyentuh chain sungguhan.

Apakah aku butuh wallet atau ETH testnet untuk memakai ini?
Tidak. Playground ini menjalankan contract-mu di dalam EVM di sisi server (mesin yang sama yang disertakan geth) dalam container terisolasi untuk setiap request. Tidak ada transaksi on-chain, tidak ada gas yang dibayar dengan ETH sungguhan, tidak ada tanda tangan wallet. Saat kamu menekan Jalankan, runner men-deploy contract-mu ke chain baru di memori, memanggil fungsi main(...) dengan argumen apa pun yang kamu berikan, lalu menampilkan stdout, event, dan storage dari satu panggilan itu. Semuanya dibuang setelah Jalankan selesai.
Bagaimana cara memberi input ke contract-ku?
Beri contract-mu fungsi bernama main(...) dengan parameter bertipe apa pun yang kamu mau, misalnya function main(uint256 n) external atau function main(string memory name, uint256 age, bool active) external view. Lalu tambahkan nilainya di panel Argumen di bawah editor. Runner memeriksa signature fungsinya dan melakukan ABI encoding pada string-mu ke tipe yang tepat, sama seperti yang dilakukan cast call di command line. Untuk argumen address, ketik 0x...; untuk bool, ketik true atau false; untuk uint, ketik nilai desimalnya.
Apa bedanya tab Output, Event, dan Storage?
Output menampilkan apa pun yang kamu tulis ke stdout lewat console.log(...) dari forge-std/console.sol, plus pesan error revert / require. Event menampilkan setiap event yang di-emit contract-mu selama eksekusi, secara berurutan, dengan nilai setiap parameternya (dan label kecil "indexed" untuk parameter yang di-index, yaitu yang masuk ke topic log EVM dan bisa difilter oleh tool seperti The Graph). Storage menampilkan nilai setiap state variable yang ditulis setelah eksekusi, termasuk entri mapping satu per satu; variabel yang tidak kamu sentuh tidak masuk ke daftar.
Kenapa di beberapa tutorial Solidity yang pernah aku baca tidak ada main()?
Di chain sungguhan, contract Solidity tidak punya satu titik masuk: client memanggil fungsi public mana pun yang mereka mau, yang dikenali dari selector 4 byte-nya. Playground ini memakai main() sebagai konvensi supaya ada sesuatu yang jelas untuk dijalankan dan tempat untuk menaruh argumen. Di luar playground, contract-mu biasanya menyediakan banyak fungsi (mint, transfer, withdraw, ...) dan frontend-mu atau tool seperti cast / ethers / viem yang memilih fungsi mana yang dipanggil.

Alat berguna untuk Solidity

Alat gratis berbasis browser yang cocok dipakai bersama Playground Solidity, semuanya bagian dari Coddy.