Skip to content

Commit 5fa953e

Browse files
committed
#120 [contract][Yosemite-Token] fix inconsistent yosemite token-issue stat
1 parent fb97698 commit 5fa953e

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

contracts/yosemite.card.ytoken/yosemite.card.ytoken.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -176,12 +176,14 @@ namespace yosemitex { namespace contract {
176176

177177
int64_t merchant_issued_ytoken_available = (*yosemite_token_issue_info_it).available;
178178
if ( merchant_issued_ytoken_available >= price_ytoken_amount ) {
179-
// consume merchant-issued Yosemite Tokens
179+
// consume merchant-issued Yosemite Tokens ( ytokenissue.merchant.availble (-), ytoken.contract_owner.balance (-) )
180180
burn_yosemite_token( merchant, price_ytoken_amount, true /*is_consumed_by_customer*/ );
181+
stat_subtract_ytoken_issue_total_available( price_ytoken_amount );
181182
consumed_merchant_issued_ytoken_amount = price_ytoken_amount;
182183
} else {
183184
// consume merchant-issued Yosemite Tokens
184185
burn_yosemite_token( merchant, merchant_issued_ytoken_available, true /*is_consumed_by_customer*/ );
186+
stat_subtract_ytoken_issue_total_available( merchant_issued_ytoken_available );
185187
consumed_merchant_issued_ytoken_amount = merchant_issued_ytoken_available;
186188
}
187189
}
@@ -194,7 +196,7 @@ namespace yosemitex { namespace contract {
194196
}
195197

196198
// transfer customer reward Yosemite Token amount to ycard.users pool account
197-
if (customer_reward_ytoken_amount > 0 ) {
199+
if ( customer_reward_ytoken_amount > 0 ) {
198200
transfer_token( _self, YOSEMITE_TOKEN_YCARD_USERS_POOL_ACCOUNT, customer_reward_ytoken_amount );
199201
}
200202

@@ -237,7 +239,7 @@ namespace yosemitex { namespace contract {
237239
if ( rollbacked_from_merchant_ytoken_balance < -price_ytoken_amount ) {
238240
yosemite_token_issue_table_idx ytoken_issue_table( _self, _self );
239241
auto yosemite_token_issue_info_it = ytoken_issue_table.find( merchant );
240-
eosio_assert( yosemite_token_issue_info_it != ytoken_issue_table.end(), "cancel payment failed. insufficient yosemite tokens roll-backed" );
242+
eosio_assert( yosemite_token_issue_info_it != ytoken_issue_table.end(), "cancel payment failed. insufficient yosemite tokens to be roll-backed" );
241243

242244
// rollback consumed merchant-issued ytoken 'available' balance
243245
int64_t ytoken_issue_available_amount_to_recover = -price_ytoken_amount - rollbacked_from_merchant_ytoken_balance;
@@ -248,6 +250,8 @@ namespace yosemitex { namespace contract {
248250

249251
// rollback burned(consumed) Yosemite Token balance
250252
issue_token( _self, ytoken_issue_available_amount_to_recover );
253+
254+
stat_add_ytoken_issue_total_available( ytoken_issue_available_amount_to_recover );
251255
}
252256

253257
// rollback customer-used ytoken amount
@@ -264,9 +268,9 @@ namespace yosemitex { namespace contract {
264268
void yosemite_card_ytoken::usdytissue( const asset& qty /* USD */, const string& tag ) {
265269

266270
int64_t token_amount = qty.amount;
267-
symbol_type token_symbol = qty.symbol;
271+
symbol_type fiat_token_symbol = qty.symbol;
268272

269-
eosio_assert( token_symbol.value == S(4,USD), "symbol of quantity must be USD" );
273+
eosio_assert( fiat_token_symbol.value == S(4,USD), "symbol of quantity must be USD" );
270274
eosio_assert( tag.size() <= 256, "too long tag string, max tag string size is 256 bytes" );
271275
eosio_assert( qty.is_valid(), "invalid fiat token quantity" );
272276
eosio_assert( token_amount > 0, "must issue positive yosemite token quantity" );
@@ -500,7 +504,7 @@ namespace yosemitex { namespace contract {
500504
require_recipient( issuer );
501505

502506
if ( issuer != to ) {
503-
SEND_INLINE_ACTION( *this, credittxfer, {issuer, N(crdtransfer)}, {issuer, to, qty, tag} )
507+
SEND_INLINE_ACTION( *this, credittxfer, {issuer, N(codecrdtxfer)}, {issuer, to, qty, tag} )
504508
}
505509
}
506510

@@ -656,9 +660,9 @@ namespace yosemitex { namespace contract {
656660

657661
yosemite_token_issue_table_idx ytoken_issue_table( _self, _self );
658662
auto yosemite_token_issue_info_it = ytoken_issue_table.find( ytoken_issuer );
659-
eosio_assert ( yosemite_token_issue_info_it != ytoken_issue_table.end(), "no yosemite token issue info" );
663+
eosio_assert ( yosemite_token_issue_info_it != ytoken_issue_table.end(), "insufficient available yosemite token amount to burn, no yosemite token issue info" );
660664
auto current_fiat_backed_ytoken_issue_info = *yosemite_token_issue_info_it;
661-
eosio_assert( current_fiat_backed_ytoken_issue_info.available >= ytoken_amount, "insufficient available yosemite token amount" );
665+
eosio_assert( current_fiat_backed_ytoken_issue_info.available >= ytoken_amount, "insufficient available yosemite token amount to burn" );
662666
ytoken_issue_table.modify( yosemite_token_issue_info_it, 0, [&](yosemite_token_issue_info& info) {
663667
if ( is_consumed_by_customer ) {
664668
info.total_consumed += ytoken_amount;

contracts/yosemite.card.ytoken/yosemite.card.ytoken.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ namespace yosemitex { namespace contract {
316316
EOSLIB_SERIALIZE( yosemite_token_issue_info, (account)(total_issued)(total_consumed)(total_burned)(last_issued)(available) )
317317
};
318318

319-
typedef eosio::multi_index< N(ytokenissued), yosemite_token_issue_info > yosemite_token_issue_table_idx;
319+
typedef eosio::multi_index< N(ytokenissue), yosemite_token_issue_info > yosemite_token_issue_table_idx;
320320

321321
struct yosemite_token_issue_stat {
322322
asset total_available;

0 commit comments

Comments
 (0)