提交 ef2c3884 编写于 作者: W Wang Zhi

update hddlock contract

上级 fadf302d
......@@ -11,6 +11,21 @@
"fields": [
]
},
{
"name": "addaccbig",
"base": "",
"fields": [
{"name":"user", "type":"account_name"},
{"name":"desc", "type":"string"}
]
},
{
"name": "rmvaccbig",
"base": "",
"fields": [
{"name":"user", "type":"account_name"}
]
},
{
"name": "clearall",
"base": "",
......@@ -57,6 +72,7 @@
{"name":"from", "type":"account_name"},
{"name":"to", "type":"account_name"},
{"name":"quantity", "type":"asset"},
{"name":"amount", "type":"asset"},
{"name":"memo", "type":"string"}
]
},
......@@ -89,6 +105,20 @@
"type": "uint64"
}
]
},
{
"name": "accbig",
"base": "",
"fields": [
{
"name": "user",
"type": "account_name"
},
{
"name": "desc",
"type": "string"
}
]
}
],
"actions": [
......@@ -127,7 +157,14 @@
"index_type": "i64",
"key_names": [],
"key_types": []
}
},
{
"name": "accbig",
"type": "accbig",
"index_type": "i64",
"key_names": [],
"key_types": []
}
],
"ricardian_clauses": [],
"variants": []
......
......@@ -19,6 +19,30 @@ void hddlock::init() {
}
void hddlock::addaccbig(account_name user, std::string& desc) {
require_auth(_self);
accbig_table _accbig( _self , _self );
auto itmaccbig = _accbig.find(user);
eosio_assert(itmaccbig == _accbig.end(), "user already registered as big account");
_accbig.emplace(_self, [&](auto &row) {
row.user = user;
row.desc = desc;
});
}
void hddlock::rmvaccbig(account_name user) {
require_auth(_self);
accbig_table _accbig( _self , _self );
auto itmaccbig = _accbig.find(user);
if(itmaccbig != _accbig.end()) {
_accbig.erase(itmaccbig);
}
}
void hddlock::addrule(uint64_t lockruleid, std::vector<uint64_t>& times, std::vector<uint8_t>& percentage, std::string& desc)
{
require_auth(_self);
......@@ -38,11 +62,15 @@ void hddlock::addrule(uint64_t lockruleid, std::vector<uint64_t>& times, std::ve
});
}
void hddlock::locktransfer(uint64_t lockruleid, account_name from, account_name to, asset quantity, std::string memo)
void hddlock::locktransfer(uint64_t lockruleid, account_name from, account_name to, asset quantity, asset amount, std::string memo)
{
require_auth(from);
eosio_assert( quantity.symbol == CORE_SYMBOL , "only core symbole support this lock transsfer");
accbig_table _accbig( _self , _self );
auto itmaccbig = _accbig.find(from);
eosio_assert(itmaccbig != _accbig.end(), "from can not locktransfer");
lockrule_table _lockrule(_self, _self);
auto itrule = _lockrule.find(lockruleid);
eosio_assert(itrule != _lockrule.end(), "lockruleid not existed in rule table");
......@@ -50,7 +78,7 @@ void hddlock::locktransfer(uint64_t lockruleid, account_name from, account_name
action(
permission_level{from, active_permission},
token_account, N(transfer),
std::make_tuple(from, to, quantity, memo))
std::make_tuple(from, to, amount, memo))
.send();
acclock_table _acclock(_self, to);
......@@ -76,4 +104,4 @@ void hddlock::clearall() {
}
EOSIO_ABI( hddlock, (init)(addrule)(locktransfer)(clearall))
EOSIO_ABI( hddlock, (init)(addrule)(locktransfer)(clearall)(addaccbig)(rmvaccbig))
......@@ -20,9 +20,11 @@ class hddlock : public eosio::contract {
void init();
void addrule(uint64_t lockruleid, std::vector<uint64_t>& times, std::vector<uint8_t>& percentage, std::string& desc);
void locktransfer(uint64_t lockruleid, account_name from, account_name to, asset quantity, std::string memo);
void locktransfer(uint64_t lockruleid, account_name from, account_name to, asset quantity, asset amount, std::string memo);
void clearall();
void addaccbig(account_name user, std::string& desc);
void rmvaccbig(account_name user);
inline asset get_lock_asset( account_name user )const;
......@@ -33,7 +35,7 @@ class hddlock : public eosio::contract {
std::vector<uint64_t> times;
std::vector<uint8_t> percentage;
std::string desc;
uint64_t primary_key()const { return lockruleid; }
uint64_t primary_key()const { return lockruleid; }
};
typedef multi_index<N(lockrule), lockrule> lockrule_table;
......@@ -44,10 +46,16 @@ class hddlock : public eosio::contract {
account_name from;
std::string memo;
uint64_t time;
uint64_t primary_key()const { return time; }
uint64_t primary_key()const { return time; }
};
typedef multi_index<N(acclock), acclock> acclock_table;
struct accbig {
account_name user;
std::string desc;
uint64_t primary_key()const { return user; }
};
typedef multi_index<N(accbig), accbig> accbig_table;
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册