HACD Testnet Contract Lab
Write, compile and deploy smart contracts on HACD Testnet
Refresh
Contract Code Editor
use pragma 0.1.0 contract MyContract { const COUNTER_KEY = "counter" // storage: persistent state between transactions function external ircode increment() -> u64 { var v = storage_load(COUNTER_KEY) if v is nil { storage_save(COUNTER_KEY, 1) return 1 } var n = v as u64 n += 1 storage_save(COUNTER_KEY, n) return n } function external ircode get_counter() -> u64 { var v = storage_load(COUNTER_KEY) if v is nil { return 0 } return v as u64 } // memory: contract-local, transaction lifetime function external ircode memory_set(v: u64) -> u64 { memory_put(0, v) return v } function external ircode memory_get_value() -> u64 { var v = memory_get(0) if v is nil { return 0 } return v as u64 } // global: transaction-wide scope function external ircode global_set(v: u64) -> u64 { global_put(1, v) return v } function external ircode global_get_value() -> u64 { var v = global_get(1) if v is nil { return 0 } return v as u64 } // heap: raw byte memory for current function call function external ircode heap_demo() -> u64 { heap_grow(1) heap_write(0, "abcd") var data = heap_read(0, 4) if size(data) == 4 { return 1 } return 0 } function external ircode add(a: u64, b: u64) -> u64 { return a + b } }
Account Information
Account Address
Loading...
Deploy Nonce (Random)
Balance
HAC: -
SAT: -
HACD: -
Compile
Deploy
Compile Result
Click "Compile" to see transaction JSON
Deploy Result
Click "Deploy" after successful compilation
Contract Testing
Sandbox Query
Transaction Call
Contract Address
Function Name
Arguments (comma separated)
Query
Contract Address
Function Name
Arguments (comma separated)
Tip: default numeric args are parsed as
u64
. You can also pass typed args like
100:u32
.
Maincall Assert (optional)
Uses variable
r
(the function return value). If provided, maincall runs
assert ...
then returns 0.
Gas Max
gas units
Submit & Mint