Search in sources :

Example 1 with Address

use of io.nuls.account.entity.Address in project nuls by nuls-io.

the class AccountTool method createAccount.

public static Account createAccount(String prikey) throws NulsException {
    ECKey key = null;
    if (StringUtils.isBlank(prikey)) {
        key = new ECKey();
    } else {
        try {
            key = ECKey.fromPrivate(new BigInteger(Hex.decode(prikey)));
        } catch (Exception e) {
            throw new NulsException(ErrorCode.DATA_PARSE_ERROR);
        }
    }
    Address address = new Address(NulsContext.getInstance().getChainId(NulsContext.CHAIN_ID), Utils.sha256hash160(key.getPubKey()));
    Account account = new Account();
    account.setEncryptedPriKey(new byte[0]);
    account.setAddress(address);
    account.setPubKey(key.getPubKey());
    account.setEcKey(key);
    account.setPriKey(key.getPrivKeyBytes());
    account.setCreateTime(TimeService.currentTimeMillis());
    return account;
}
Also used : Account(io.nuls.account.entity.Account) Address(io.nuls.account.entity.Address) NulsException(io.nuls.core.exception.NulsException) BigInteger(java.math.BigInteger) ECKey(io.nuls.core.crypto.ECKey) NulsException(io.nuls.core.exception.NulsException) NulsRuntimeException(io.nuls.core.exception.NulsRuntimeException)

Example 2 with Address

use of io.nuls.account.entity.Address in project nuls by nuls-io.

the class UtxoOutput method parse.

@Override
protected void parse(NulsByteBuffer byteBuffer) throws NulsException {
    if (byteBuffer == null) {
        return;
    }
    index = (int) byteBuffer.readVarInt();
    value = byteBuffer.readInt64();
    lockTime = byteBuffer.readInt48();
    p2PKHScript = byteBuffer.readNulsData(new P2PKHScript());
    Address addressObj = new Address(NulsContext.getInstance().getChainId(NulsContext.CHAIN_ID), this.getOwner());
    this.address = addressObj.toString();
}
Also used : P2PKHScript(io.nuls.core.script.P2PKHScript) Address(io.nuls.account.entity.Address)

Example 3 with Address

use of io.nuls.account.entity.Address in project nuls by nuls-io.

the class UtxoCoinDataProvider method createByTransferData.

@Override
public CoinData createByTransferData(Transaction tx, CoinTransferData coinParam, String password) throws NulsException {
    UtxoData utxoData = new UtxoData();
    List<UtxoInput> inputs = new ArrayList<>();
    List<UtxoOutput> outputs = new ArrayList<>();
    if (coinParam.getTotalNa().equals(Na.ZERO)) {
        utxoData.setInputs(inputs);
        utxoData.setOutputs(outputs);
        return utxoData;
    }
    long inputValue = 0;
    if (!coinParam.getFrom().isEmpty()) {
        // find unSpends to create inputs for this tx
        Na totalFee = Na.ZERO;
        if (tx instanceof UnlockNulsTransaction) {
            totalFee = coinParam.getFee();
        } else {
            totalFee = coinParam.getTotalNa().add(coinParam.getFee());
        }
        List<UtxoOutput> unSpends = coinManager.getAccountsUnSpend(coinParam.getFrom(), totalFee);
        if (unSpends.isEmpty()) {
            throw new NulsException(ErrorCode.BALANCE_NOT_ENOUGH);
        }
        for (int i = 0; i < unSpends.size(); i++) {
            UtxoOutput output = unSpends.get(i);
            UtxoInput input = new UtxoInput();
            input.setFrom(output);
            input.setFromHash(output.getTxHash());
            input.setFromIndex(output.getIndex());
            input.setTxHash(tx.getHash());
            input.setIndex(i);
            inputValue += output.getValue();
            inputs.add(input);
        }
    }
    // get EcKey for output's script
    Account account = null;
    byte[] priKey = null;
    if (coinParam.getPriKey() != null) {
        priKey = coinParam.getPriKey();
    } else if (!coinParam.getFrom().isEmpty()) {
        account = accountService.getAccount(coinParam.getFrom().get(0));
        if (account == null) {
            throw new NulsException(ErrorCode.ACCOUNT_NOT_EXIST);
        }
        if (account.isEncrypted() && account.isLocked()) {
            if (!account.unlock(password)) {
                throw new NulsException(ErrorCode.PASSWORD_IS_WRONG);
            }
            priKey = account.getPriKey();
            account.lock();
        } else {
            priKey = account.getPriKey();
        }
    }
    // create outputs
    int i = 0;
    long outputValue = 0;
    for (Map.Entry<String, List<Coin>> entry : coinParam.getToMap().entrySet()) {
        String address = entry.getKey();
        List<Coin> coinList = entry.getValue();
        for (Coin coin : coinList) {
            UtxoOutput output = new UtxoOutput();
            output.setAddress(address);
            output.setValue(coin.getNa().getValue());
            if (output.getLockTime() > 0) {
                output.setStatus(OutPutStatusEnum.UTXO_UNCONFIRM_TIME_LOCK);
            } else if (tx instanceof LockNulsTransaction) {
                output.setStatus(OutPutStatusEnum.UTXO_UNCONFIRM_CONSENSUS_LOCK);
            } else {
                output.setStatus(OutPutStatusEnum.UTXO_UNCONFIRM_UNSPEND);
            }
            output.setIndex(i);
            P2PKHScript p2PKHScript = new P2PKHScript(new NulsDigestData(NulsDigestData.DIGEST_ALG_SHA160, new Address(address).getHash160()));
            output.setP2PKHScript(p2PKHScript);
            if (coin.getUnlockHeight() > 0) {
                output.setLockTime(coin.getUnlockHeight());
            } else if (coin.getUnlockTime() > 0) {
                output.setLockTime(coin.getUnlockTime());
            } else {
                output.setLockTime(0L);
            }
            output.setTxHash(tx.getHash());
            outputValue += output.getValue();
            outputs.add(output);
            i++;
        }
    }
    // the balance leave to myself
    long balance = inputValue - outputValue - coinParam.getFee().getValue();
    if (balance > 0) {
        UtxoOutput output = new UtxoOutput();
        // todo script
        output.setAddress(inputs.get(0).getFrom().getAddress());
        output.setValue(balance);
        output.setIndex(i);
        output.setTxHash(tx.getHash());
        output.setStatus(OutPutStatusEnum.UTXO_UNCONFIRM_UNSPEND);
        P2PKHScript p2PKHScript = new P2PKHScript(new NulsDigestData(NulsDigestData.DIGEST_ALG_SHA160, account.getHash160()));
        output.setP2PKHScript(p2PKHScript);
        outputs.add(output);
    }
    utxoData.setInputs(inputs);
    utxoData.setOutputs(outputs);
    return utxoData;
}
Also used : P2PKHScript(io.nuls.core.script.P2PKHScript) Account(io.nuls.account.entity.Account) Address(io.nuls.account.entity.Address) Coin(io.nuls.ledger.entity.params.Coin) LockNulsTransaction(io.nuls.ledger.entity.tx.LockNulsTransaction) Na(io.nuls.core.chain.entity.Na) NulsException(io.nuls.core.exception.NulsException) UnlockNulsTransaction(io.nuls.ledger.entity.tx.UnlockNulsTransaction) NulsDigestData(io.nuls.core.chain.entity.NulsDigestData)

Example 4 with Address

use of io.nuls.account.entity.Address in project nuls by nuls-io.

the class PocMeetingMember method compareTo.

@Override
public int compareTo(PocMeetingMember o2) {
    if (this.getSortValue() == null) {
        String hashHex = new Address(this.getAgentAddress()).hashHex();
        this.setSortValue(Sha256Hash.twiceOf((roundStartTime + hashHex).getBytes()).toString());
    }
    if (o2.getSortValue() == null) {
        String hashHex = new Address(o2.getAgentAddress()).hashHex();
        o2.setSortValue(Sha256Hash.twiceOf((o2.getRoundStartTime() + hashHex).getBytes()).toString());
    }
    return this.getSortValue().compareTo(o2.getSortValue());
}
Also used : Address(io.nuls.account.entity.Address)

Example 5 with Address

use of io.nuls.account.entity.Address in project nuls by nuls-io.

the class YellowPunishTxService method onCommit.

@Override
public void onCommit(YellowPunishTransaction tx) throws NulsException {
    YellowPunishData data = tx.getTxData();
    for (Address address : data.getAddressList()) {
        PunishLogPo po = new PunishLogPo();
        po.setAddress(address.getBase58());
        po.setHeight(data.getHeight());
        po.setId(StringUtils.getNewUUID());
        po.setTime(tx.getTime());
        po.setType(PunishType.YELLOW.getCode());
        punishLogDataService.save(po);
    }
}
Also used : Address(io.nuls.account.entity.Address) YellowPunishData(io.nuls.consensus.entity.YellowPunishData) PunishLogPo(io.nuls.db.entity.PunishLogPo)

Aggregations

Address (io.nuls.account.entity.Address)9 NulsException (io.nuls.core.exception.NulsException)3 Account (io.nuls.account.entity.Account)2 YellowPunishData (io.nuls.consensus.entity.YellowPunishData)2 NulsRuntimeException (io.nuls.core.exception.NulsRuntimeException)2 P2PKHScript (io.nuls.core.script.P2PKHScript)2 Alias (io.nuls.account.entity.Alias)1 BlockRoundData (io.nuls.consensus.entity.block.BlockRoundData)1 PocMeetingMember (io.nuls.consensus.entity.meeting.PocMeetingMember)1 PocMeetingRound (io.nuls.consensus.entity.meeting.PocMeetingRound)1 YellowPunishTransaction (io.nuls.consensus.entity.tx.YellowPunishTransaction)1 Na (io.nuls.core.chain.entity.Na)1 NulsDigestData (io.nuls.core.chain.entity.NulsDigestData)1 ECKey (io.nuls.core.crypto.ECKey)1 AliasPo (io.nuls.db.entity.AliasPo)1 PunishLogPo (io.nuls.db.entity.PunishLogPo)1 Coin (io.nuls.ledger.entity.params.Coin)1 LockNulsTransaction (io.nuls.ledger.entity.tx.LockNulsTransaction)1 UnlockNulsTransaction (io.nuls.ledger.entity.tx.UnlockNulsTransaction)1 IOException (java.io.IOException)1