From 689b162b7cb9aaf2f630ca0ebe8cf0e3c2757cb3 Mon Sep 17 00:00:00 2001 From: hitesh Date: Tue, 6 Jun 2023 17:19:02 +0530 Subject: [PATCH 1/2] fixed always true assertion in icrc2_approve method --- ref/ICRC1.mo | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ref/ICRC1.mo b/ref/ICRC1.mo index 8ec8192c..82aa9cff 100644 --- a/ref/ICRC1.mo +++ b/ref/ICRC1.mo @@ -6,6 +6,7 @@ import Option "mo:base/Option"; import Error "mo:base/Error"; import Time "mo:base/Time"; import Int "mo:base/Int"; +import Nat "mo:base/Nat"; import Nat8 "mo:base/Nat8"; import Nat64 "mo:base/Nat64"; @@ -524,7 +525,7 @@ actor class Ledger(init : { initial_mints : [{ account : { owner : Principal; su timestamp = now; }); - assert (balance(approverAccount, log) == overflowOk(approverBalance - effectiveFee)); + assert (Nat.sub(balance(approverAccount, log), effectiveFee) == overflowOk(approverBalance - effectiveFee)); #Ok(txid); }; From 34ab306af082c004fd1aee4d60e69381dde223fb Mon Sep 17 00:00:00 2001 From: hitesh Date: Wed, 7 Jun 2023 12:38:45 +0530 Subject: [PATCH 2/2] handling #Approve inside balance function --- ref/ICRC1.mo | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ref/ICRC1.mo b/ref/ICRC1.mo index 82aa9cff..af2358c0 100644 --- a/ref/ICRC1.mo +++ b/ref/ICRC1.mo @@ -6,7 +6,6 @@ import Option "mo:base/Option"; import Error "mo:base/Error"; import Time "mo:base/Time"; import Int "mo:base/Int"; -import Nat "mo:base/Nat"; import Nat8 "mo:base/Nat8"; import Nat64 "mo:base/Nat64"; @@ -127,7 +126,11 @@ actor class Ledger(init : { initial_mints : [{ account : { owner : Principal; su }; if (accountsEqual(args.to, account)) { sum += args.amount }; }; - case (#Approve(_)) {}; + case (#Approve(args)) { + if (accountsEqual(args.from, account)) { + sum -= tx.fee; + } + }; }; }; sum; @@ -525,7 +528,7 @@ actor class Ledger(init : { initial_mints : [{ account : { owner : Principal; su timestamp = now; }); - assert (Nat.sub(balance(approverAccount, log), effectiveFee) == overflowOk(approverBalance - effectiveFee)); + assert (balance(approverAccount, log) == overflowOk(approverBalance - effectiveFee)); #Ok(txid); };