Search in sources :

Example 6 with Na

use of io.nuls.kernel.model.Na in project nuls by nuls-io.

the class ContractTransferTransaction method getFee.

@Override
public Na getFee() {
    ContractTransferData data = this.txData;
    byte success = data.getSuccess();
    // 合约执行成功的内部转账,手续费已从Gas中扣除,此处不在收取手续费
    if (success == 1) {
        return Na.ZERO;
    }
    // 合约执行失败,退回调用者向合约地址转入的资金,需要额外收取手续费
    Na fee = Na.ZERO;
    if (null != coinData) {
        fee = coinData.getFee();
    }
    return fee;
}
Also used : Na(io.nuls.kernel.model.Na) ContractTransferData(io.nuls.contract.entity.txdata.ContractTransferData)

Example 7 with Na

use of io.nuls.kernel.model.Na in project nuls by nuls-io.

the class PocRewardCacheService method addRewardItem.

private void addRewardItem(long height, long time, Coin coin, long startTime) {
    // String address = AddressTool.getStringAddressByBytes(coin.());
    String address = AddressTool.getStringAddressByBytes(coin.getAddress());
    Map<Long, RewardItem> map = todayRewardMap.get(address);
    if (null == map) {
        map = new HashMap<>();
        todayRewardMap.put(address, map);
    }
    if (time > startTime) {
        map.put(height, new RewardItem(time, coin.getNa()));
    }
    Na tna = todayMap.get(address);
    if (tna == null) {
        tna = Na.ZERO;
    }
    tna = tna.add(coin.getNa());
    todayMap.put(address, tna);
    Na na = totalMap.get(address);
    if (na == null) {
        na = Na.ZERO;
    }
    na = na.add(coin.getNa());
    totalMap.put(address, na);
    if (height > totalRewardHeight) {
        totalReward = totalReward.add(coin.getNa());
    }
}
Also used : Na(io.nuls.kernel.model.Na) RewardItem(io.nuls.consensus.poc.model.RewardItem)

Example 8 with Na

use of io.nuls.kernel.model.Na 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 9 with Na

use of io.nuls.kernel.model.Na in project nuls by nuls-io.

the class PocRewardCacheService method calcRewards.

public void calcRewards() {
    List<String> list = new ArrayList<>(todayRewardMap.keySet());
    Na na = Na.ZERO;
    Map<String, Na> resultMap = new HashMap<>();
    long startTime = TimeService.currentTimeMillis() - 24 * 3600000L;
    for (String address : list) {
        Na reward = Na.ZERO;
        List<RewardItem> rewardItems = new ArrayList<>(todayRewardMap.get(address).values());
        for (RewardItem item : rewardItems) {
            if (item.getTime() < startTime) {
                continue;
            }
            reward = reward.add(item.getNa());
        }
        na = na.add(reward);
        resultMap.put(address, reward);
    }
    this.todayReward = na;
    this.todayMap = resultMap;
}
Also used : Na(io.nuls.kernel.model.Na) RewardItem(io.nuls.consensus.poc.model.RewardItem)

Example 10 with Na

use of io.nuls.kernel.model.Na in project nuls by nuls-io.

the class UtxoResource method getUtxoByAddressAndAmount.

@GET
@Path("/amount/{address}/{amount}")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "根据address和amount查询UTXO")
@ApiResponses(value = { @ApiResponse(code = 200, message = "success", response = AccountUtxoDto.class) })
public RpcClientResult getUtxoByAddressAndAmount(@ApiParam(name = "address", value = "地址", required = true) @PathParam("address") String address, @ApiParam(name = "amount", value = "金额", required = true) @PathParam("amount") Long amount) {
    if (StringUtils.isBlank(address) || amount == null) {
        return Result.getFailed(LedgerErrorCode.NULL_PARAMETER).toRpcClientResult();
    }
    if (!AddressTool.validAddress(address)) {
        return Result.getFailed(LedgerErrorCode.PARAMETER_ERROR).toRpcClientResult();
    }
    Result result = null;
    try {
        List<Coin> coinList = getAllUtxoByAddress(address);
        Na amountNa = Na.valueOf(amount.longValue());
        AccountUtxoDto accountUtxoDto = new AccountUtxoDto();
        List<UtxoDto> list = new LinkedList<>();
        Na values = Na.ZERO;
        for (Coin coin : coinList) {
            if (!coin.usable()) {
                continue;
            }
            if (coin.getNa().equals(Na.ZERO)) {
                continue;
            }
            list.add(new UtxoDto(coin));
            values = values.add(coin.getNa());
            if (values.isGreaterOrEquals(amountNa)) {
                break;
            }
        }
        accountUtxoDto.setUtxoDtoList(list);
        result = Result.getSuccess().setData(accountUtxoDto);
        return result.toRpcClientResult();
    } catch (Exception e) {
        Log.error(e);
        result = Result.getFailed(LedgerErrorCode.SYS_UNKOWN_EXCEPTION);
        return result.toRpcClientResult();
    }
}
Also used : Coin(io.nuls.kernel.model.Coin) Na(io.nuls.kernel.model.Na) NulsException(io.nuls.kernel.exception.NulsException) RpcClientResult(io.nuls.kernel.model.RpcClientResult) Result(io.nuls.kernel.model.Result) Path(javax.ws.rs.Path) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET)

Aggregations

Na (io.nuls.kernel.model.Na)20 Coin (io.nuls.kernel.model.Coin)8 RewardItem (io.nuls.consensus.poc.model.RewardItem)3 NulsException (io.nuls.kernel.exception.NulsException)3 RpcClientResult (io.nuls.kernel.model.RpcClientResult)3 AgentPo (io.nuls.consensus.poc.storage.po.AgentPo)2 DepositPo (io.nuls.consensus.poc.storage.po.DepositPo)2 CoinData (io.nuls.kernel.model.CoinData)2 TransactionSignature (io.nuls.kernel.script.TransactionSignature)2 ValidateResult (io.nuls.kernel.validate.ValidateResult)2 CoinBaseTransaction (io.nuls.protocol.model.tx.CoinBaseTransaction)2 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 CoinDataResult (io.nuls.account.ledger.model.CoinDataResult)1 TransactionInfo (io.nuls.account.ledger.model.TransactionInfo)1 Balance (io.nuls.account.model.Balance)1 MultipleTxToDto (io.nuls.accout.ledger.rpc.dto.MultipleTxToDto)1 TransferForm (io.nuls.accout.ledger.rpc.form.TransferForm)1 Deposit (io.nuls.consensus.poc.protocol.entity.Deposit)1 CallContractData (io.nuls.contract.entity.txdata.CallContractData)1