Java Code Examples for net.bither.bitherj.core.In

The following examples show how to use net.bither.bitherj.core.In. These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source Project: bither-desktop-java   Source File: TxHelper.java    License: Apache License 2.0 6 votes vote down vote up
public static void addInsAndOuts(TxDBHelper mDb, Tx txItem) throws AddressFormatException, SQLException {
    String txHashStr = Base58.encode(txItem.getTxHash());
    txItem.setOuts(new ArrayList<Out>());
    txItem.setIns(new ArrayList<In>());
    String sql = "select * from ins where tx_hash=? order by in_sn";
    PreparedStatement statement = mDb.getPreparedStatement(sql, new String[]{txHashStr});
    ResultSet c = statement.executeQuery();
    while (c.next()) {
        In inItem = TxHelper.applyCursorIn(c);
        inItem.setTx(txItem);
        txItem.getIns().add(inItem);
    }
    c.close();
    statement.close();

    sql = "select * from outs where tx_hash=? order by out_sn";
    statement = mDb.getPreparedStatement(sql, new String[]{txHashStr});
    c = statement.executeQuery();
    while (c.next()) {
        Out outItem = TxHelper.applyCursorOut(c);
        outItem.setTx(txItem);
        txItem.getOuts().add(outItem);
    }
    c.close();
    statement.close();
}
 
Example 2
Source Project: bither-desktop-java   Source File: TxProvider.java    License: Apache License 2.0 6 votes vote down vote up
public boolean isTxDoubleSpendWithConfirmedTx(Tx tx) {
    String sql = "select count(0) cnt from ins a, txs b where a.tx_hash=b.tx_hash and" +
            " b.block_no is not null and a.prev_tx_hash=? and a.prev_out_sn=?";
    ResultSet rs;
    try {
        for (In inItem : tx.getIns()) {
            PreparedStatement statement = this.mDb.getPreparedStatement(sql, new String[]{Base58.encode(inItem.getPrevTxHash()), Integer.toString(inItem.getPrevOutSn())});
            rs = statement.executeQuery();
            if (rs.next()) {
                int columnIndex = rs.findColumn("cnt");
                if (columnIndex != -1 && rs.getInt(columnIndex) > 0) {
                    rs.close();
                    statement.close();
                    return true;
                }
            }
            rs.close();
            statement.close();

        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return false;
}
 
Example 3
Source Project: bither-desktop-java   Source File: TxProvider.java    License: Apache License 2.0 6 votes vote down vote up
public List<String> getInAddresses(Tx tx) {
    List<String> result = new ArrayList<String>();
    String sql = "select out_address from outs where tx_hash=? and out_sn=?";
    ResultSet c;
    try {
        for (In inItem : tx.getIns()) {
            PreparedStatement statement = this.mDb.getPreparedStatement(sql, new String[]{Base58.encode(inItem.getPrevTxHash()), Integer.toString(inItem.getPrevOutSn())});
            c = statement.executeQuery();
            if (c.next()) {
                int column = c.findColumn("out_address");
                if (column != -1) {
                    result.add(c.getString(column));
                }
            }
            c.close();
            statement.close();
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return result;
}
 
Example 4
Source Project: bither-desktop-java   Source File: TxProvider.java    License: Apache License 2.0 6 votes vote down vote up
public void completeInSignature(final List<In> ins) {
    try {
        this.mDb.getConn().setAutoCommit(false);
        String sql = "update ins set in_signature=? where tx_hash=? and in_sn=? and ifnull(in_signature,'')=''";
        for (In in : ins) {
            PreparedStatement preparedStatement = this.mDb.getConn().prepareStatement(sql);
            preparedStatement.setString(1, Base58.encode(in.getInSignature()));
            preparedStatement.setString(2, Base58.encode(in.getTxHash()));
            preparedStatement.setInt(3, in.getInSn());
            preparedStatement.executeUpdate();
            preparedStatement.close();
        }
        this.mDb.getConn().commit();
    } catch (SQLException e) {
        e.printStackTrace();
    }

}
 
Example 5
Source Project: bither-android   Source File: TxProvider.java    License: Apache License 2.0 6 votes vote down vote up
@Override
protected void insertInToDb(IDb db, In in) {
    AndroidDb mdb = (AndroidDb)db;
    ContentValues cv = new ContentValues();
    cv.put(AbstractDb.InsColumns.TX_HASH, Base58.encode(in.getTxHash()));
    cv.put(AbstractDb.InsColumns.IN_SN, in.getInSn());
    cv.put(AbstractDb.InsColumns.PREV_TX_HASH, Base58.encode(in.getPrevTxHash()));
    cv.put(AbstractDb.InsColumns.PREV_OUT_SN, in.getPrevOutSn());
    if (in.getInSignature() != null) {
        cv.put(AbstractDb.InsColumns.IN_SIGNATURE, Base58.encode(in.getInSignature()));
    } else {
        cv.putNull(AbstractDb.InsColumns.IN_SIGNATURE);
    }
    cv.put(AbstractDb.InsColumns.IN_SEQUENCE, in.getInSequence());
    mdb.getSQLiteDatabase().insert(AbstractDb.Tables.INS, null, cv);
}
 
Example 6
Source Project: bitherj   Source File: AbstractHDAccountAddressProvider.java    License: Apache License 2.0 6 votes vote down vote up
@Override
public List<HDAccount.HDAccountAddress> getSigningAddressesForInputs(int hdAccountId, List<In> inList) {
    final List<HDAccount.HDAccountAddress> hdAccountAddressList =
            new ArrayList<HDAccount.HDAccountAddress>();
    for (In in : inList) {
        String sql = "select a.address,a.path_type,a.address_index,a.is_synced,a.hd_account_id" +
                " from hd_account_addresses a ,outs b" +
                " where a.address=b.out_address" +
                " and b.tx_hash=? and b.out_sn=? and a.hd_account_id=?";
        OutPoint outPoint = in.getOutpoint();
        this.execQueryOneRecord(sql, new String[]{Base58.encode(in.getPrevTxHash()), Integer.toString
                (outPoint.getOutSn()), Integer.toString(hdAccountId)}, new Function<ICursor, Void>() {
            @Nullable
            @Override
            public Void apply(@Nullable ICursor c) {
                hdAccountAddressList.add(formatAddress(c));
                return null;
            }
        });
    }
    return hdAccountAddressList;
}
 
Example 7
Source Project: bitherj   Source File: AbstractTxProvider.java    License: Apache License 2.0 6 votes vote down vote up
@Override
public List<Tx> getTxAndDetailByAddress(String address) {
    final List<Tx> txItemList = new ArrayList<Tx>();
    final HashMap<Sha256Hash, Tx> txDict = new HashMap<Sha256Hash, Tx>();
    String sql = "select b.* from addresses_txs a, txs b" +
            " where a.tx_hash=b.tx_hash and a.address=? order by ifnull(b.block_no,4294967295) desc";
    IDb db = this.getReadDb();
    this.execQueryLoop(db, sql, new String[]{address}, new Function<ICursor, Void>() {
        @Nullable
        @Override
        public Void apply(@Nullable ICursor c) {
            Tx txItem = applyCursor(c);
            txItem.setIns(new ArrayList<In>());
            txItem.setOuts(new ArrayList<Out>());
            txItemList.add(txItem);
            txDict.put(new Sha256Hash(txItem.getTxHash()), txItem);
            return null;
        }
    });
    addInForTxDetail(db, address, txDict);
    addOutForTxDetail(db, address, txDict);

    return txItemList;
}
 
Example 8
Source Project: bitherj   Source File: AbstractTxProvider.java    License: Apache License 2.0 6 votes vote down vote up
private void addInForTxDetail(IDb db, String address, final HashMap<Sha256Hash, Tx> txDict) {
    String sql = "select b.* from addresses_txs a, ins b where a.tx_hash=b.tx_hash and a.address=? "
            + "order by b.tx_hash ,b.in_sn";
    this.execQueryLoop(db, sql, new String[]{address}, new Function<ICursor, Void>() {
        @Nullable
        @Override
        public Void apply(@Nullable ICursor c) {
            In inItem = applyCursorIn(c);
            Tx tx = txDict.get(new Sha256Hash(inItem.getTxHash()));
            if (tx != null) {
                tx.getIns().add(inItem);
            }
            return null;
        }
    });
}
 
Example 9
Source Project: bitherj   Source File: AbstractTxProvider.java    License: Apache License 2.0 6 votes vote down vote up
public boolean isTxDoubleSpendWithConfirmedTx(Tx tx) {
    String sql = "select count(0) from ins a, txs b where a.tx_hash=b.tx_hash and" +
            " b.block_no is not null and a.prev_tx_hash=? and a.prev_out_sn=?";
    IDb db = this.getReadDb();
    for (In inItem : tx.getIns()) {
        final int[] cnt = {0};
        this.execQueryOneRecord(db, sql, new String[]{Base58.encode(inItem.getPrevTxHash()), Integer.toString(inItem.getPrevOutSn())}, new Function<ICursor, Void>() {
            @Nullable
            @Override
            public Void apply(@Nullable ICursor c) {
                cnt[0] = c.getInt(0);
                return null;
            }
        });
        if (cnt[0] > 0) {
            return true;
        }
    }
    return false;
}
 
Example 10
Source Project: bitherj   Source File: AbstractTxProvider.java    License: Apache License 2.0 6 votes vote down vote up
public List<String> getInAddresses(Tx tx) {
    final List<String> result = new ArrayList<String>();
    String sql = "select out_address from outs where tx_hash=? and out_sn=?";
    IDb db = this.getReadDb();
    for (In inItem : tx.getIns()) {
        this.execQueryOneRecord(db, sql, new String[]{Base58.encode(inItem.getPrevTxHash())
                , Integer.toString(inItem.getPrevOutSn())}, new Function<ICursor, Void>() {
            @Nullable
            @Override
            public Void apply(@Nullable ICursor c) {
                if (!c.isNull(0)) {
                    result.add(c.getString(0));
                }
                return null;
            }
        });
    }
    return result;
}
 
Example 11
Source Project: bither-desktop-java   Source File: TxHelper.java    License: Apache License 2.0 6 votes vote down vote up
public static void addInsAndOuts(TxDBHelper mDb, Tx txItem) throws AddressFormatException, SQLException {
    String txHashStr = Base58.encode(txItem.getTxHash());
    txItem.setOuts(new ArrayList<Out>());
    txItem.setIns(new ArrayList<In>());
    String sql = "select * from ins where tx_hash=? order by in_sn";
    PreparedStatement statement = mDb.getPreparedStatement(sql, new String[]{txHashStr});
    ResultSet c = statement.executeQuery();
    while (c.next()) {
        In inItem = TxHelper.applyCursorIn(c);
        inItem.setTx(txItem);
        txItem.getIns().add(inItem);
    }
    c.close();
    statement.close();

    sql = "select * from outs where tx_hash=? order by out_sn";
    statement = mDb.getPreparedStatement(sql, new String[]{txHashStr});
    c = statement.executeQuery();
    while (c.next()) {
        Out outItem = TxHelper.applyCursorOut(c);
        outItem.setTx(txItem);
        txItem.getOuts().add(outItem);
    }
    c.close();
    statement.close();
}
 
Example 12
Source Project: bither-desktop-java   Source File: TxProvider.java    License: Apache License 2.0 6 votes vote down vote up
public boolean isTxDoubleSpendWithConfirmedTx(Tx tx) {
    String sql = "select count(0) cnt from ins a, txs b where a.tx_hash=b.tx_hash and" +
            " b.block_no is not null and a.prev_tx_hash=? and a.prev_out_sn=?";
    ResultSet rs;
    try {
        for (In inItem : tx.getIns()) {
            PreparedStatement statement = this.mDb.getPreparedStatement(sql, new String[]{Base58.encode(inItem.getPrevTxHash()), Integer.toString(inItem.getPrevOutSn())});
            rs = statement.executeQuery();
            if (rs.next()) {
                int columnIndex = rs.findColumn("cnt");
                if (columnIndex != -1 && rs.getInt(columnIndex) > 0) {
                    rs.close();
                    statement.close();
                    return true;
                }
            }
            rs.close();
            statement.close();

        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return false;
}
 
Example 13
Source Project: bither-desktop-java   Source File: TxProvider.java    License: Apache License 2.0 6 votes vote down vote up
public List<String> getInAddresses(Tx tx) {
    List<String> result = new ArrayList<String>();
    String sql = "select out_address from outs where tx_hash=? and out_sn=?";
    ResultSet c;
    try {
        for (In inItem : tx.getIns()) {
            PreparedStatement statement = this.mDb.getPreparedStatement(sql, new String[]{Base58.encode(inItem.getPrevTxHash()), Integer.toString(inItem.getPrevOutSn())});
            c = statement.executeQuery();
            if (c.next()) {
                int column = c.findColumn("out_address");
                if (column != -1) {
                    result.add(c.getString(column));
                }
            }
            c.close();
            statement.close();
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return result;
}
 
Example 14
Source Project: bither-desktop-java   Source File: TxProvider.java    License: Apache License 2.0 6 votes vote down vote up
public void completeInSignature(final List<In> ins) {
    try {
        this.mDb.getConn().setAutoCommit(false);
        String sql = "update ins set in_signature=? where tx_hash=? and in_sn=? and ifnull(in_signature,'')=''";
        for (In in : ins) {
            PreparedStatement preparedStatement = this.mDb.getConn().prepareStatement(sql);
            preparedStatement.setString(1, Base58.encode(in.getInSignature()));
            preparedStatement.setString(2, Base58.encode(in.getTxHash()));
            preparedStatement.setInt(3, in.getInSn());
            preparedStatement.executeUpdate();
            preparedStatement.close();
        }
        this.mDb.getConn().commit();
    } catch (SQLException e) {
        e.printStackTrace();
    }

}
 
Example 15
Source Project: bither-desktop-java   Source File: TxHelper.java    License: Apache License 2.0 5 votes vote down vote up
public static In applyCursorIn(ResultSet c) throws AddressFormatException, SQLException {
    In inItem = new In();
    int idColumn = c.findColumn(AbstractDb.InsColumns.TX_HASH);
    if (idColumn != -1) {
        inItem.setTxHash(Base58.decode(c.getString(idColumn)));
    }
    idColumn = c.findColumn(AbstractDb.InsColumns.IN_SN);
    if (idColumn != -1) {
        inItem.setInSn(c.getInt(idColumn));
    }
    idColumn = c.findColumn(AbstractDb.InsColumns.PREV_TX_HASH);
    if (idColumn != -1) {
        inItem.setPrevTxHash(Base58.decode(c.getString(idColumn)));
    }
    idColumn = c.findColumn(AbstractDb.InsColumns.PREV_OUT_SN);
    if (idColumn != -1) {
        inItem.setPrevOutSn(c.getInt(idColumn));
    }
    idColumn = c.findColumn(AbstractDb.InsColumns.IN_SIGNATURE);
    if (idColumn != -1) {
        String inSignature = c.getString(idColumn);
        if (!Utils.isEmpty(inSignature)) {
            inItem.setInSignature(Base58.decode(c.getString(idColumn)));
        }
    }
    idColumn = c.findColumn(AbstractDb.InsColumns.IN_SEQUENCE);
    if (idColumn != -1) {
        inItem.setInSequence(c.getInt(idColumn));
    }
    return inItem;
}
 
Example 16
Source Project: bither-desktop-java   Source File: TxProvider.java    License: Apache License 2.0 5 votes vote down vote up
private void addInForTxDetail(String address, HashMap<Sha256Hash, Tx> txDict) throws AddressFormatException, SQLException {
    String sql = "select b.* from addresses_txs a, ins b where a.tx_hash=b.tx_hash and a.address=? "
            + "order by b.tx_hash ,b.in_sn";
    PreparedStatement statement = this.mDb.getPreparedStatement(sql, new String[]{address});
    ResultSet c = statement.executeQuery();
    while (c.next()) {
        In inItem = TxHelper.applyCursorIn(c);
        Tx tx = txDict.get(new Sha256Hash(inItem.getTxHash()));
        if (tx != null) {
            tx.getIns().add(inItem);
        }
    }
    c.close();
    statement.close();
}
 
Example 17
Source Project: bitherj   Source File: AbstractTxProvider.java    License: Apache License 2.0 5 votes vote down vote up
public void completeInSignature(List<In> ins) {
    IDb db = this.getWriteDb();
    db.beginTransaction();
    String sql = "update ins set in_signature=? where tx_hash=? and in_sn=? and ifnull(in_signature,'')=''";
    for (In in : ins) {
        this.execUpdate(db, sql, new String[]{Base58.encode(in.getInSignature())
                , Base58.encode(in.getTxHash()), Integer.toString(in.getInSn())});
    }
    db.endTransaction();
}
 
Example 18
Source Project: bitherj   Source File: AbstractTxProvider.java    License: Apache License 2.0 5 votes vote down vote up
public byte[] isIdentify(Tx tx) {
    HashSet<String> result = new HashSet<String>();

    for (In in : tx.getIns()) {
        String queryPrevTxHashSql = "select tx_hash from ins where prev_tx_hash=? and prev_out_sn=?";
        final HashSet<String> each = new HashSet<String>();
        this.execQueryOneRecord(this.getReadDb(), queryPrevTxHashSql, new String[]{Base58.encode(in.getPrevTxHash())
                , Integer.toString(in.getPrevOutSn())}, new Function<ICursor, Void>() {
            @Nullable
            @Override
            public Void apply(@Nullable ICursor c) {
                each.add(c.getString(0));
                return null;
            }
        });
        each.remove(Base58.encode(tx.getTxHash()));
        result.retainAll(each);
        if (result.size() == 0) {
            break;
        }
    }
    if (result.size() == 0) {
        return new byte[0];
    } else {
        try {
            return Base58.decode((String) result.toArray()[0]);
        } catch (AddressFormatException e) {
            e.printStackTrace();
            return new byte[0];
        }
    }
}
 
Example 19
Source Project: bither-desktop-java   Source File: TxHelper.java    License: Apache License 2.0 5 votes vote down vote up
public static In applyCursorIn(ResultSet c) throws AddressFormatException, SQLException {
    In inItem = new In();
    int idColumn = c.findColumn(AbstractDb.InsColumns.TX_HASH);
    if (idColumn != -1) {
        inItem.setTxHash(Base58.decode(c.getString(idColumn)));
    }
    idColumn = c.findColumn(AbstractDb.InsColumns.IN_SN);
    if (idColumn != -1) {
        inItem.setInSn(c.getInt(idColumn));
    }
    idColumn = c.findColumn(AbstractDb.InsColumns.PREV_TX_HASH);
    if (idColumn != -1) {
        inItem.setPrevTxHash(Base58.decode(c.getString(idColumn)));
    }
    idColumn = c.findColumn(AbstractDb.InsColumns.PREV_OUT_SN);
    if (idColumn != -1) {
        inItem.setPrevOutSn(c.getInt(idColumn));
    }
    idColumn = c.findColumn(AbstractDb.InsColumns.IN_SIGNATURE);
    if (idColumn != -1) {
        String inSignature = c.getString(idColumn);
        if (!Utils.isEmpty(inSignature)) {
            inItem.setInSignature(Base58.decode(c.getString(idColumn)));
        }
    }
    idColumn = c.findColumn(AbstractDb.InsColumns.IN_SEQUENCE);
    if (idColumn != -1) {
        inItem.setInSequence(c.getInt(idColumn));
    }
    return inItem;
}
 
Example 20
Source Project: bither-desktop-java   Source File: TxProvider.java    License: Apache License 2.0 5 votes vote down vote up
private void addInForTxDetail(String address, HashMap<Sha256Hash, Tx> txDict) throws AddressFormatException, SQLException {
    String sql = "select b.* from addresses_txs a, ins b where a.tx_hash=b.tx_hash and a.address=? "
            + "order by b.tx_hash ,b.in_sn";
    PreparedStatement statement = this.mDb.getPreparedStatement(sql, new String[]{address});
    ResultSet c = statement.executeQuery();
    while (c.next()) {
        In inItem = TxHelper.applyCursorIn(c);
        Tx tx = txDict.get(new Sha256Hash(inItem.getTxHash()));
        if (tx != null) {
            tx.getIns().add(inItem);
        }
    }
    c.close();
    statement.close();
}
 
Example 21
Source Project: bitherj   Source File: IDesktopTxProvider.java    License: Apache License 2.0 votes vote down vote up
List<DesktopHDMAddress> getSigningAddressesForInputs(DesktopHDMKeychain keychain, List<In> inList); 
Example 22
Source Project: bitherj   Source File: AbstractTxProvider.java    License: Apache License 2.0 votes vote down vote up
protected abstract void insertInToDb(IDb db, In in); 
Example 23
Source Project: bitherj   Source File: IHDAccountAddressProvider.java    License: Apache License 2.0 votes vote down vote up
List<HDAccount.HDAccountAddress> getSigningAddressesForInputs(int hdAccountId, List<In> inList); 
Example 24
Source Project: bitherj   Source File: ITxProvider.java    License: Apache License 2.0 votes vote down vote up
void completeInSignature(List<In> ins);