//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); }
/** * 用户交易股权 * **/ 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); }
/** * 初始化合约 **/ 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); }