use of io.nuls.protocol.model.tx.CoinBaseTransaction in project nuls by nuls-io.
the class ChainContainer method verifyCoinBaseTx.
public boolean verifyCoinBaseTx(Block block, MeetingRound currentRound, MeetingMember member) {
Transaction tx = block.getTxs().get(0);
CoinBaseTransaction coinBaseTransaction = ConsensusTool.createCoinBaseTx(member, block.getTxs(), currentRound, block.getHeader().getHeight() + PocConsensusConstant.COINBASE_UNLOCK_HEIGHT);
if (null == coinBaseTransaction || !tx.getHash().equals(coinBaseTransaction.getHash())) {
BlockLog.debug("the coin base tx is wrong! height: " + block.getHeader().getHeight() + " , hash : " + block.getHeader().getHash());
Log.error("the coin base tx is wrong! height: " + block.getHeader().getHeight() + " , hash : " + block.getHeader().getHash());
return false;
}
return true;
}
use of io.nuls.protocol.model.tx.CoinBaseTransaction in project nuls by nuls-io.
the class PocRewardCacheService method calcRewardHistory.
private void calcRewardHistory(String address, List<TransactionInfo> list, long startHeight) {
byte[] addressByte = AddressTool.getAddress(address);
for (TransactionInfo info : list) {
if (info.getTxType() != ProtocolConstant.TX_TYPE_COINBASE) {
continue;
}
CoinBaseTransaction tx = (CoinBaseTransaction) ledgerService.getTx(info.getTxHash());
if (null == tx) {
continue;
}
if (info.getBlockHeight() >= startHeight) {
continue;
}
if (null == tx.getCoinData().getTo() || tx.getCoinData().getTo().isEmpty()) {
continue;
}
for (Coin coin : tx.getCoinData().getTo()) {
// if (!Arrays.equals(addressByte, coin.()))
if (!Arrays.equals(addressByte, coin.getAddress())) {
continue;
}
Na na = totalMap.get(address);
if (na == null) {
na = Na.ZERO;
}
na = na.add(coin.getNa());
totalMap.put(address, na);
}
}
}
use of io.nuls.protocol.model.tx.CoinBaseTransaction in project nuls by nuls-io.
the class TransactionServiceImplTest method createCoinBaseTransaction.
private CoinBaseTransaction createCoinBaseTransaction(ECKey ecKey, ECKey... ecKeys) {
CoinBaseTransaction tx = new CoinBaseTransaction();
setCommonFields(tx);
CoinData coinData = new CoinData();
List<Coin> toList = new ArrayList<>();
toList.add(new Coin(AddressTool.getAddress(ecKey.getPubKey()), Na.parseNuls(10000), 1000));
toList.add(new Coin(AddressTool.getAddress(ecKey.getPubKey()), Na.parseNuls(10000), 0));
for (ECKey ecKey1 : ecKeys) {
Coin coin = new Coin(AddressTool.getAddress(ecKey1.getPubKey()), Na.parseNuls(10000), 0);
toList.add(coin);
}
coinData.setTo(toList);
tx.setCoinData(coinData);
signTransaction(tx, ecKey);
return tx;
}
Aggregations