Transaction

85802E86DF59E6…0780F51E20F0

Block 26,344 · index 0 · indexed

Summary

Hash
85802E86DF59E69EB77364D2ACB29DD906C897C84A443049EB1E0780F51E20F0
Block
26,344
Size
2308 bytes
Gas used
7,204,296 / 8,645,215
Fee
1000000ugnot
Memo
gnopublish
Status
success

Messages

#1AddPackagegno.land/r/moul/demo/wikicoin/v09 arguments

Arguments · 9

  1. #1wikicoin
  2. #2README.md
  3. #3# `gno.land/r/moul/demo/wikicoin/v0` _TODO: describe this package._ <!-- BEGIN GNOCONTRACTS FOOTER (generated by `make readmes`; do not edit below) --> --- Part of **[moul/gno-contracts](https://github.com/moul/gno-contracts)** — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage. **Dependency graph:** ![gno.land/r/moul/demo/wikicoin/v0 dependency graph](https://raw.githubusercontent.com/moul/gno-contracts/main/_assets/gno.land/r/moul/demo/wikicoin/v0/deps.png) > ⚠️ **Disclaimer:** provided as-is, without warranty; not security-audited. Full disclaimer: [DISCLAIMER](https://github.com/moul/gno-contracts/blob/main/DISCLAIMER.md). <!-- END GNOCONTRACTS FOOTER -->
  4. #4contract.gno
  5. #5// based on Wikipedia's Solidity example: https://en.wikipedia.org/wiki/Solidity package wikicoin import ( "chain/runtime/unsafe" "gno.land/p/nt/avl/v0" "gno.land/p/nt/ufmt/v0" ) var balances = avl.NewTree() // addr -> balance var minter address // Constructor code is only run when the contract is created func init() { minter = unsafe.OriginCaller() } func Mint(cur realm, receiver address, amount uint) { if unsafe.OriginCaller() != minter { panic("restricted") } curBalance := BalanceOf(receiver) newBalance := curBalance + amount balances.Set(receiver.String(), newBalance) } func Send(cur realm, receiver address, amount uint) { sender := unsafe.OriginCaller() senderBalance := BalanceOf(sender) if amount > senderBalance { panic(ufmt.Sprintf("insufficient balance: %d", senderBalance)) } receiverBalance := BalanceOf(receiver) balances.Set(sender.String(), senderBalance-amount) balances.Set(receiver.String(), receiverBalance+amount) } func BalanceOf(addr address) uint { balance := balances.Get(addr.String()) if balance == nil { return 0 } return balance.(uint) }
  6. #6gnomod.toml
  7. #7module = "gno.land/r/moul/demo/wikicoin/v0" gno = "0.9"
  8. #8/gno.MemPackageType
  9. #9 MPUserProd

Result log

msg:0,success:true,log:,events:[]

← Back to block 26,344