Example #1
0
        //DDZ 发行总量查询
        public static BigInteger totalSupply(byte stype)
        {
            BigInteger coin     = 0;
            BPECInfo   bpecInfo = getBPECInfo();

            if (bpecInfo.oTotalSupply > 0)
            {
                if (stype == 1)
                {
                    coin = bpecInfo.tTotalSupply;
                }
                else if (stype == 2)
                {
                    coin = bpecInfo.cTotalSupply;
                }
                else if (stype == 3)
                {
                    coin = bpecInfo.oTotalSupply;
                }
                else
                {
                    BigInteger tCoin = bpecInfo.tTotalSupply;
                    BigInteger cCoin = bpecInfo.cTotalSupply;
                    BigInteger oCoin = bpecInfo.oTotalSupply;
                    coin = tCoin + cCoin + oCoin;
                }
            }
            return(coin);
        }
Example #2
0
        /**
         * 用户交易股权
         *
         **/
        public static bool transfer(byte[] from, byte[] to, BigInteger value)
        {
            bool       bol     = false;
            BigInteger claimId = 0;

            if (from.Length > 0 && to.Length > 0 && value > 0 && from != to)
            {
                BPECPoolInfo bpecPoolInfo = getBPECPoolInfo();
                if (bpecPoolInfo.bpecState == 1)
                {
                    claimId = bpecPoolInfo.claimCode;
                    //
                    BPECInfo bpecInfo = getBPECInfo();
                    //获得当前块的高度
                    BigInteger height = Blockchain.GetHeight();
                    //付款方
                    var  keyFrom = new byte[] { 0x11 }.Concat(from);
                    Info fromInfo   = getInfo(from);
                    var  from_value = fromInfo.balance;
                    if (from_value >= value)
                    {
                        fromInfo.block   = height;
                        fromInfo.balance = from_value - value;
                        Storage.Put(Storage.CurrentContext, keyFrom, Helper.Serialize(fromInfo));
                        //收款方
                        var  keyTo = new byte[] { 0x11 }.Concat(to);
                        Info toInfo   = getInfo(to);
                        var  to_value = toInfo.balance;
                        toInfo.block   = height;
                        toInfo.balance = to_value + value;
                        Storage.Put(Storage.CurrentContext, keyTo, Helper.Serialize(toInfo));
                        //保存交易记录

                        /*TransferInfo trInfo = new TransferInfo();
                         * trInfo.from = from;
                         * trInfo.to = to;
                         * trInfo.ttp = 1;
                         * trInfo.value = value;
                         * txid = (ExecutionEngine.ScriptContainer as Transaction).Hash;
                         * Storage.Put(Storage.CurrentContext, txid, Helper.Serialize(trInfo));*/
                        bol = true;
                    }
                }
                //notify
                if (bol == true)
                {
                    Transfered(1, from, to, 1, value, claimId);
                }
                else
                {
                    Transfered(0, from, to, 1, value, claimId);
                }
            }
            return(bol);
        }
Example #3
0
        /**
         * 初始化合约
         **/
        public static bool deploy()
        {
            bool bol = false;

            if (Runtime.CheckWitness(ContractOwner))
            {
                BPECInfo bpecInfo = getBPECInfo();
                if (bpecInfo.oTotalSupply == 0)
                {
                    //基本配置
                    bpecInfo.oTotalSupply = OBPEC;
                    bpecInfo.tTotalSupply = TBPEC;
                    bpecInfo.cTotalSupply = CBPEC;
                    Storage.Put(Storage.CurrentContext, "BPECInfo", Helper.Serialize(bpecInfo));
                    //余额池
                    BPECPoolInfo bpecPoolInfo = getBPECPoolInfo();
                    bpecPoolInfo.obpecBalance = OBPEC;
                    bpecPoolInfo.tbpecBalance = TBPEC;
                    bpecPoolInfo.cbpecBalance = CBPEC;
                    bpecPoolInfo.obpecOver    = 1;
                    bpecPoolInfo.claimCode    = 1;
                    bpecPoolInfo.bpecState    = 1;
                    Storage.Put(Storage.CurrentContext, "BPECPoolInfo", Helper.Serialize(bpecPoolInfo));
                    //初始化分红池
                    ClaimPoolInfo claimPoolInfo = new ClaimPoolInfo();
                    claimPoolInfo.claimCode  = 1;
                    claimPoolInfo.claimPool  = 0;
                    claimPoolInfo.pCount     = 0;
                    claimPoolInfo.saleCount  = 0;
                    claimPoolInfo.shareCount = 0;
                    claimPoolInfo.teamCount  = 0;
                    claimPoolInfo.commCount  = 0;
                    claimPoolInfo.claimState = 0;
                    var key = "claim_".AsByteArray().Concat(claimPoolInfo.claimCode.AsByteArray());
                    Storage.Put(Storage.CurrentContext, key, Helper.Serialize(claimPoolInfo));
                    bol = true;
                }
            }
            //
            if (bol == true)
            {
                Deployed(1);
            }
            else
            {
                Deployed(0);
            }
            return(bol);
        }