Search in sources :

Example 1 with CoinBaseTransaction

use of io.nuls.protocol.model.tx.CoinBaseTransaction in project nuls by nuls-io.

the class GenesisBlock method initGengsisTxs.

private void initGengsisTxs(Map<String, Object> jsonMap) throws Exception {
    List<Map<String, Object>> list = (List<Map<String, Object>>) jsonMap.get(CONFIG_FILED_TXS);
    if (null == list || list.isEmpty()) {
        throw new NulsRuntimeException(KernelErrorCode.CONFIG_ERROR);
    }
    CoinData coinData = new CoinData();
    for (Map<String, Object> map : list) {
        String address = (String) map.get(CONFIG_FILED_ADDRESS);
        AssertUtil.canNotEmpty(address, KernelErrorCode.NULL_PARAMETER.getMsg());
        Double amount = Double.valueOf("" + map.get(CONFIG_FILED_AMOUNT));
        AssertUtil.canNotEmpty(amount, KernelErrorCode.NULL_PARAMETER.getMsg());
        Long lockTime = Long.valueOf("" + map.get(CONFIG_FILED_LOCK_TIME));
        Address ads = Address.fromHashs(address);
        Coin coin = new Coin(ads.getAddressBytes(), Na.parseNuls(amount), lockTime == null ? 0 : lockTime.longValue());
        coinData.addTo(coin);
    }
    CoinBaseTransaction tx = new CoinBaseTransaction();
    tx.setTime(this.blockTime);
    tx.setCoinData(coinData);
    String remark = (String) jsonMap.get(CONFIG_FILED_REMARK);
    if (StringUtils.isNotBlank(remark)) {
        tx.setRemark(Hex.decode(remark));
    }
    tx.setHash(NulsDigestData.calcDigestData(tx.serializeForHash()));
    List<Transaction> txlist = new ArrayList<>();
    txlist.add(tx);
    setTxs(txlist);
}
Also used : ArrayList(java.util.ArrayList) NulsRuntimeException(io.nuls.kernel.exception.NulsRuntimeException) CoinBaseTransaction(io.nuls.protocol.model.tx.CoinBaseTransaction) CoinBaseTransaction(io.nuls.protocol.model.tx.CoinBaseTransaction) ArrayList(java.util.ArrayList) List(java.util.List) Map(java.util.Map)

Example 2 with CoinBaseTransaction

use of io.nuls.protocol.model.tx.CoinBaseTransaction in project nuls by nuls-io.

the class PocRewardCacheService method rollback.

public void rollback(Block block) {
    if (block.getHeader().getHeight() > endHeight) {
        return;
    }
    CoinBaseTransaction tx = (CoinBaseTransaction) block.getTxs().get(0);
    if (null != tx.getCoinData().getTo() && !tx.getCoinData().getTo().isEmpty()) {
        for (Coin coin : tx.getCoinData().getTo()) {
            // String address = AddressTool.getStringAddressByBytes(coin.());
            String address = AddressTool.getStringAddressByBytes(coin.getAddress());
            Map<Long, RewardItem> map = todayRewardMap.get(address);
            if (null == map) {
                continue;
            }
            map.remove(block.getHeader().getHeight());
            Na na = totalMap.get(address);
            if (na == null) {
                continue;
            }
            na = na.subtract(coin.getNa());
            todayMap.put(address, na);
        }
    }
    if (endHeight == block.getHeader().getHeight()) {
        endHeight = block.getHeader().getHeight() - 1;
    }
}
Also used : Coin(io.nuls.kernel.model.Coin) Na(io.nuls.kernel.model.Na) CoinBaseTransaction(io.nuls.protocol.model.tx.CoinBaseTransaction) RewardItem(io.nuls.consensus.poc.model.RewardItem)

Example 3 with CoinBaseTransaction

use of io.nuls.protocol.model.tx.CoinBaseTransaction in project nuls by nuls-io.

the class PocRewardCacheService method addBlock.

public void addBlock(Block block) {
    if (block.getHeader().getHeight() <= endHeight) {
        return;
    }
    CoinBaseTransaction tx = (CoinBaseTransaction) block.getTxs().get(0);
    this.calcReward(block.getHeader().getHeight(), tx);
}
Also used : CoinBaseTransaction(io.nuls.protocol.model.tx.CoinBaseTransaction)

Example 4 with CoinBaseTransaction

use of io.nuls.protocol.model.tx.CoinBaseTransaction in project nuls by nuls-io.

the class ConsensusProcess method addConsensusTx.

/**
 * CoinBase transaction & Punish transaction
 *
 * @param bestBlock local highest block
 * @param txList    all tx of block
 * @param self      agent meeting data
 */
private void addConsensusTx(Block bestBlock, List<Transaction> txList, MeetingMember self, MeetingRound round) throws NulsException, IOException {
    CoinBaseTransaction coinBaseTransaction = ConsensusTool.createCoinBaseTx(self, txList, round, bestBlock.getHeader().getHeight() + 1 + PocConsensusConstant.COINBASE_UNLOCK_HEIGHT);
    txList.add(0, coinBaseTransaction);
    punishTx(bestBlock, txList, self, round);
}
Also used : CoinBaseTransaction(io.nuls.protocol.model.tx.CoinBaseTransaction)

Example 5 with CoinBaseTransaction

use of io.nuls.protocol.model.tx.CoinBaseTransaction in project nuls by nuls-io.

the class ConsensusTool method createCoinBaseTx.

public static CoinBaseTransaction createCoinBaseTx(MeetingMember member, List<Transaction> txList, MeetingRound localRound, long unlockHeight) {
    CoinData coinData = new CoinData();
    // 合约剩余Gas退还
    List<Coin> returnGasList = returnContractSenderNa(txList, unlockHeight);
    List<Coin> rewardList = calcReward(txList, member, localRound, unlockHeight);
    if (!returnGasList.isEmpty()) {
        Coin agentReward = rewardList.remove(0);
        rewardList.addAll(returnGasList);
        rewardList.sort(new Comparator<Coin>() {

            @Override
            public int compare(Coin o1, Coin o2) {
                return Arrays.hashCode(o1.getOwner()) > Arrays.hashCode(o2.getOwner()) ? 1 : -1;
            }
        });
        rewardList.add(0, agentReward);
    }
    for (Coin coin : rewardList) {
        coinData.addTo(coin);
    }
    CoinBaseTransaction tx = new CoinBaseTransaction();
    tx.setTime(member.getPackEndTime());
    tx.setCoinData(coinData);
    try {
        tx.setHash(NulsDigestData.calcDigestData(tx.serializeForHash()));
    } catch (IOException e) {
        Log.error(e);
    }
    return tx;
}
Also used : CoinBaseTransaction(io.nuls.protocol.model.tx.CoinBaseTransaction) IOException(java.io.IOException)

Aggregations

CoinBaseTransaction (io.nuls.protocol.model.tx.CoinBaseTransaction)8 Coin (io.nuls.kernel.model.Coin)2 Na (io.nuls.kernel.model.Na)2 ArrayList (java.util.ArrayList)2 TransactionInfo (io.nuls.account.ledger.model.TransactionInfo)1 RewardItem (io.nuls.consensus.poc.model.RewardItem)1 ECKey (io.nuls.core.tools.crypto.ECKey)1 NulsRuntimeException (io.nuls.kernel.exception.NulsRuntimeException)1 IOException (java.io.IOException)1 List (java.util.List)1 Map (java.util.Map)1