diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cacc6da --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.idea +/cmake-build-debug/ diff --git a/include/dgoods.hpp b/include/dgoods.hpp index c17a57f..60b8f0a 100644 --- a/include/dgoods.hpp +++ b/include/dgoods.hpp @@ -14,7 +14,7 @@ using namespace std; using namespace eosio; using namespace utility; -CONTRACT dgoods: public contract { +class [[eosio::contract]] dgoods: public contract { public: using contract::contract; @@ -23,10 +23,12 @@ CONTRACT dgoods: public contract { dgoods(name receiver, name code, datastream ds) : contract(receiver, code, ds) {} - ACTION setconfig(const symbol_code& symbol, + [[eosio::action]] + void setconfig(const symbol_code& symbol, const string& version); - ACTION create(const name& issuer, + [[eosio::action]] + void create(const name& issuer, const name& rev_partner, const name& category, const name& token_name, @@ -39,52 +41,63 @@ CONTRACT dgoods: public contract { const uint32_t& max_issue_days, const asset& max_supply); - ACTION issue(const name& to, + [[eosio::action]] + void issue(const name& to, const name& category, const name& token_name, const asset& quantity, const string& relative_uri, const string& memo); - ACTION freezemaxsup( const name& category, const name& token_name ); + [[eosio::action]] + void freezemaxsup( const name& category, const name& token_name ); - ACTION burnnft(const name& owner, + [[eosio::action]] + void burnnft(const name& owner, const vector& dgood_ids); - ACTION burnft(const name& owner, + [[eosio::action]] + void burnft(const name& owner, const uint64_t& category_name_id, const asset& quantity); - void buynft(const name& from, const name& to, const asset& quantity, const string& memo); + [[eosio::action]] + void buynft(const name& from, const name& to, const asset& quantity, const string& memo); - ACTION transfernft(const name& from, + [[eosio::action]] + void transfernft(const name& from, const name& to, const vector& dgood_ids, const string& memo); - ACTION transferft(const name& from, + [[eosio::action]] + void transferft(const name& from, const name& to, const name& category, const name& token_name, const asset& quantity, const string& memo); - ACTION listsalenft(const name& seller, + [[eosio::action]] + void listsalenft(const name& seller, const vector& dgood_ids, const asset& net_sale_amount); - ACTION closesalenft(const name& seller, + [[eosio::action]] + void closesalenft(const name& seller, const uint64_t& batch_id); - ACTION logcall(const uint64_t& dgood_id); + [[eosio::action]] + void logcall(const uint64_t& dgood_id); - ACTION logsale(const vector& dgood_ids, + [[eosio::action]] + void logsale(const vector& dgood_ids, const name& seller, const name& buyer, const name& receiver); - TABLE lockednfts { + struct [[eosio::table]] lockednfts { uint64_t dgood_id; uint64_t primary_key() const { return dgood_id; } @@ -92,7 +105,7 @@ CONTRACT dgoods: public contract { // now() gets current time in sec // uint32_t 604800 is 1 week in seconds - TABLE asks { + struct [[eosio::table]] asks { uint64_t batch_id; vector dgood_ids; name seller; @@ -103,7 +116,7 @@ CONTRACT dgoods: public contract { uint64_t get_seller() const { return seller.value; } }; - TABLE tokenconfigs { + struct [[eosio::table]] tokenconfigs { name standard; string version; symbol_code symbol; @@ -111,7 +124,7 @@ CONTRACT dgoods: public contract { uint64_t next_dgood_id; }; - TABLE categoryinfo { + struct [[eosio::table]] categoryinfo { name category; uint64_t primary_key() const { return category.value; } @@ -119,7 +132,7 @@ CONTRACT dgoods: public contract { // scope is category, then token_name is unique - TABLE dgoodstats { + struct [[eosio::table]] dgoodstats { bool fungible; bool burnable; bool sellable; @@ -139,7 +152,7 @@ CONTRACT dgoods: public contract { }; // scope is self - TABLE dgood { + struct [[eosio::table]] dgood { uint64_t id; uint64_t serial_number; name owner; @@ -155,7 +168,7 @@ CONTRACT dgoods: public contract { EOSLIB_SERIALIZE( dgood, (id)(serial_number)(owner)(category)(token_name)(relative_uri) ) // scope is owner - TABLE accounts { + struct [[eosio::table]] accounts { uint64_t category_name_id; name category; name token_name; diff --git a/src/dgoods.cpp b/src/dgoods.cpp index 60c16f1..7a27e95 100644 --- a/src/dgoods.cpp +++ b/src/dgoods.cpp @@ -1,7 +1,8 @@ #include #include -ACTION dgoods::setconfig(const symbol_code& sym, const string& version) { +[[eosio::action]] +void dgoods::setconfig(const symbol_code& sym, const string& version) { require_auth( get_self() ); // valid symbol @@ -16,7 +17,8 @@ ACTION dgoods::setconfig(const symbol_code& sym, const string& version) { config_table.set( config_singleton, get_self() ); } -ACTION dgoods::create(const name& issuer, +[[eosio::action]] +void dgoods::create(const name& issuer, const name& rev_partner, const name& category, const name& token_name, @@ -99,7 +101,8 @@ ACTION dgoods::create(const name& issuer, } -ACTION dgoods::issue(const name& to, +[[eosio::action]] +void dgoods::issue(const name& to, const name& category, const name& token_name, const asset& quantity, @@ -151,7 +154,8 @@ ACTION dgoods::issue(const name& to, }); } -ACTION dgoods::burnnft(const name& owner, +[[eosio::action]] +void dgoods::burnnft(const name& owner, const vector& dgood_ids) { require_auth(owner); @@ -186,7 +190,8 @@ ACTION dgoods::burnnft(const name& owner, } } -ACTION dgoods::burnft(const name& owner, +[[eosio::action]] +void dgoods::burnft(const name& owner, const uint64_t& category_name_id, const asset& quantity) { require_auth(owner); @@ -210,7 +215,8 @@ ACTION dgoods::burnft(const name& owner, }); } -ACTION dgoods::transfernft(const name& from, +[[eosio::action]] +void dgoods::transfernft(const name& from, const name& to, const vector& dgood_ids, const string& memo ) { @@ -229,7 +235,8 @@ ACTION dgoods::transfernft(const name& from, _changeowner( from, to, dgood_ids, memo, true ); } -ACTION dgoods::transferft(const name& from, +[[eosio::action]] +void dgoods::transferft(const name& from, const name& to, const name& category, const name& token_name, @@ -261,7 +268,8 @@ ACTION dgoods::transferft(const name& from, _add_balance(to, get_self(), category, token_name, dgood_stats.category_name_id, quantity); } -ACTION dgoods::listsalenft(const name& seller, +[[eosio::action]] +void dgoods::listsalenft(const name& seller, const vector& dgood_ids, const asset& net_sale_amount) { require_auth( seller ); @@ -303,7 +311,8 @@ ACTION dgoods::listsalenft(const name& seller, }); } -ACTION dgoods::closesalenft(const name& seller, +[[eosio::action]] +void dgoods::closesalenft(const name& seller, const uint64_t& batch_id) { ask_index ask_table( get_self(), get_self().value ); const auto& ask = ask_table.get( batch_id, "cannot find sale to close" ); @@ -377,16 +386,19 @@ void dgoods::buynft(const name& from, } // method to log dgood_id and match transaction to action -ACTION dgoods::logcall(const uint64_t& dgood_id) { +[[eosio::action]] +void dgoods::logcall(const uint64_t& dgood_id) { require_auth( get_self() ); } // method to logsuccessful sale -ACTION dgoods::logsale(const vector& dgood_ids, const name& seller, const name& buyer, const name& receiver) { +[[eosio::action]] +void dgoods::logsale(const vector& dgood_ids, const name& seller, const name& buyer, const name& receiver) { require_auth( get_self() ); } -ACTION dgoods::freezemaxsup(const name& category, const name& token_name) { +[[eosio::action]] +void dgoods::freezemaxsup(const name& category, const name& token_name) { require_auth( get_self() ); // dgoodstats table @@ -566,6 +578,8 @@ extern "C" { auto self = receiver; if ( code == self ) { + bool executed = false; // TODO: REMOVE THIS + switch( action ) { EOSIO_DISPATCH_HELPER( dgoods, (setconfig)(create)(issue)(burnnft)(burnft)(transfernft)(transferft)(listsalenft)(closesalenft)(logcall)(freezemaxsup) ) }