# Task 3 Inery Testnet **Published by:** [mirror.megumii.eth](https://paragraph.com/@megumii/) **Published on:** 2022-10-08 **URL:** https://paragraph.com/@megumii/task-3-inery-testnet ## Content Create Your ContractOfficial Docs https://docs.inery.io/docs/category/tutorials/Download Toolsgit clone https://github.com/inery-blockchain/inery.cdtExport inery.cdtnano ~/.bashrc Lalu paste ini kedalam file .bashrc taruh saja paling bawah export PATH="$PATH:/root/inery.cdt/bin" Dan simpan CTRL+X Y EnterBuat directory inrcrudmkdir inrcrudPindah directorycd inrcrud cd; source .bashrc; cd -Buat file baru inrcrud.cppnano inrcrud.cppCopy semua code ini, dan paste kedalam file inrcrud.cpp#include #include #include using namespace inery; using std::string; class [[inery::contract]] inrcrud : public inery::contract { public: using inery::contract::contract; [[inery::action]] void create( uint64_t id, name user, string data ) { records recordstable( _self, id ); auto existing = recordstable.find( id ); check( existing == recordstable.end(), "record with that ID already exists" ); check( data.size() <= 256, "data has more than 256 bytes" ); recordstable.emplace( _self, [&]( auto& s ) { s.id = id; s.owner = user; s.data = data; }); print( "Hello, ", name{user} ); print( "Created with data: ", data ); } [[inery::action]] void read( uint64_t id ) { records recordstable( _self, id ); auto existing = recordstable.find( id ); check( existing != recordstable.end(), "record with that ID does not exist" ); const auto& st = *existing; print("Data: ", st.data); } [[inery::action]] void update( uint64_t id, string data ) { records recordstable( _self, id ); auto st = recordstable.find( id ); check( st != recordstable.end(), "record with that ID does not exist" ); recordstable.modify( st, get_self(), [&]( auto& s ) { s.data = data; }); print("Data: ", data); } [[inery::action]] void destroy( uint64_t id ) { records recordstable( _self, id ); auto existing = recordstable.find( id ); check( existing != recordstable.end(), "record with that ID does not exist" ); const auto& st = *existing; recordstable.erase( st ); print("Record Destroyed: ", id); } private: struct [[inery::table]] record { uint64_t id; name owner; string data; uint64_t primary_key()const { return id; } }; typedef inery::multi_index<"records"_n, record> records; }; Lalu simpanSetelah itu, Compile inery-cpp inrcrud.cpp -o inrcrud.wasmCek menggunakan command ls apakah sudah generate file inrcrud.abi inrcrud.wasm atau belumUnlock walletcline wallet unlock -n NamaWalletLalu hubungkan akun mu Crud Contractcline set contract NamaAkun ./ --json Simpan semua “block_num” dari transaksi mu, untuk mengecek di explorer nantinyaSelanjutnya create contractcline push action NamaAkun create '[1, "NamaAkun", "The First Contract by me"]' -p NamaAkun --jsonCoba untuk read contractcline push action NamaAkun read [1] -p NamaAkun --jsonUbah data contractcline push action NamaAkun update '[ 1, "First Modify to my Contract"]' -p NamaAkun --jsonLakukan update data beberapa kalicline push action NamaAkun update '[ 1, "Bebas Isi Apapun Disini"]' -p NamaAkun --json Karena task nya disuruh push some transaction, jadi jangan cuma update sekaliCreate Token menggunakan ID yang berbedacline push action NamaAkun create '["2", "NamaAkun", "1000000.0000 YUHUU"]' -p NamaAkun --jsonCobalah untuk mencetak beberapa token sepeti task 2cline push action NamaAkun issue '["2", "NamaAkun", "1000000.0000 YUHUU", "YO!"]' -p NamaAkun --json Akan muncul error karena tidak ada fungsi issue didalam contract dan juga tidak dapat di transferLangkah terakhir, cobalah untuk menghapus token di ID 2. Ini bisa dihapus karena ada fungsi destoy didalam contractcline push action NamaAkun destroy [2] -p NamaAkun --jsonUDAHKalo ngga di approve ku update lagi kapan-kapan💜 https://megumii.tez.page collect:// subscribe:// ## Publication Information - [mirror.megumii.eth](https://paragraph.com/@megumii/): Publication homepage - [All Posts](https://paragraph.com/@megumii/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@megumii): Subscribe to updates ## Optional - [Collect as NFT](https://paragraph.com/@megumii/task-3-inery-testnet): Support the author by collecting this post - [View Collectors](https://paragraph.com/@megumii/task-3-inery-testnet/collectors): See who has collected this post