コード例 #1
0
ファイル: PEG.cs プロジェクト: chenzhitong/Neo3-PEG
        public static bool Transfer(UInt160 from, UInt160 to, BigInteger amount, object data = null)
        {
            if (IsPaused())
            {
                Error("System is paused.");
                return(false);
            }
            if (IsBlacklisted(from))
            {
                Error("Argument from is in blacklist.");
                return(false);
            }
            if (IsBlacklisted(to))
            {
                Error("Argument to is in blacklist.");
                return(false);
            }
            if (amount <= 0)
            {
                Error("The parameter amount MUST be greater than 0.");
                return(false);
            }
            if (!Runtime.CheckWitness(from))
            {
                Error("No authorization.");
                return(false);
            }
            if (AssetStorage.Get(from) < amount)
            {
                Error("Insufficient balance.");
                return(false);
            }
            if (from == to)
            {
                return(true);
            }

            AssetStorage.Reduce(from, amount);

            AssetStorage.Increase(to, amount);

            Transferred(from, to, amount);

            if (ContractManagement.GetContract(to) != null)
            {
                Contract.Call(to, "onPayment", CallFlags.ReadOnly, new object[] { from, amount, data });
            }

            return(true);
        }
コード例 #2
0
        public static bool Mint(UInt160 minterAccount, BigInteger amount)
        {
            if (IsPaused())
            {
                Error("System is paused.");
                return(false);
            }
            if (amount <= 0)
            {
                Error("The parameter amount MUST be greater than 0.");
                return(false);
            }
            if (!IsMinter() || !Runtime.CheckWitness(minterAccount))
            {
                Error("No authorization.");
                return(false);
            }
            if (IsBlacklisted(minterAccount))
            {
                Error("Argument account is in blacklist.");
                return(false);
            }
            var allowance = GetAllowance(minterAccount);

            if (allowance < amount)
            {
                Error("Insufficient allowance.");
                return(false);
            }

            TotalSupplyStorage.Increase(amount);

            TotalAllowanceStorage.Reduce(amount);

            AssetStorage.Increase(minterAccount, amount);

            MinterStorage.ReduceAllowance(minterAccount, amount);

            Transferred(null, minterAccount, amount);

            return(true);
        }
コード例 #3
0
ファイル: PEG.cs プロジェクト: chenzhitong/Neo3-PEG
 public static BigInteger BalanceOf(UInt160 account) => AssetStorage.Get(account);