bro , any news? 在 2017年11月7日星期二 UTC+8下午7:38:21,Emanuele Pagliara写道: > > 早上好, > > 我试图创建一个应用程序与观看钱包,连接到区块链和另一个应用程序与钱包,私人密钥,没有连接到它,以维持私钥的秘密和离线。 > 我选择bitcoinj作为java库,并且我希望在观看钱包的应用程序上创建事务,并将它以十六进制字符串序列化到privat钱包的应用程序,以便由它签名,这里是我用于序列化的代码交易: > > //tx is my raw transaction > String hexTx = DatatypeConverter.printHexBinary(tx.bitcoinSerialize()); > > > 问题是,我不能签署我从字符串反序列化的事务,这里我使用的代码来淡化字符串并为签名提交反复的事务: > > > byte[] serializedTx = hexStringToByteArray(hexTx); > > Transaction deserializedTx = new Transaction(params,serializedTx); > > SendRequest req = SendRequest.forTx(tx); > > //secret wallet with private key > coldWallet.signTransaction(req); > > > 其中方法hexStringToByteArray(hexTx)定义如下: > > private static byte[] hexStringToByteArray(String s) { > int len = s.length(); > byte[] data = new byte[len / 2]; > for (int i = 0; i < len; i += 2) { > data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) > + Character.digit(s.charAt(i+1), 16)); > } > return data; > } > > > 为了更好地理解这里的问题,在串行化之前的交易记录: > > 2017-11-06 17:56:31,248 INFO iibTestRawTransaction [main] > 5c3996212e48725e69eadcef02b4ea > 2826e0198e14ed9dd2002d8db0b3e7 08c7 > 在<no scriptSig>中 > outpoint:8bfcfba135101c5d15641602881acc > 4799069ea1885e93c6e6d9f07d2dd7 > 802f:0 hash160:984201354d5781a017d3be3a006ae6 828c553844 > out DUP HASH160 PUSHDATA(20)[ f0497fd691918563d96258eb7e7bdb f3f88a8452] > EQUALVERIFY CHECKSIG 959.9763362 BTC > out RETURN PUSHDATA(5)[68656c6c6f] 0.0000273 BTC > 费用0.00495049 BTC / kB,对于101字节为0.0005 BTC > prps USER_PAYMENT > > 当我反序列化十六进制字符串回到一个交易对象,我获得这个日志: > > 2017-11-06 17:56:31,252信息iibTestRawTransaction [main]反序列化事务: > 5c3996212e48725e69eadcef02b4ea 2826e0198e14ed9dd2002d8db0b3e7 08c7 > 在<no scriptSig>中 > outpoint:8bfcfba135101c5d15641602881acc > 4799069ea1885e93c6e6d9f07d2dd7 > 802f:0 > out DUP HASH160 PUSHDATA(20)[ f0497fd691918563d96258eb7e7bdb f3f88a8452] > EQUALVERIFY CHECKSIG 959.9763362 BTC > out RETURN PUSHDATA(5)[68656c6c6f] 0.0000273 BTC > prps UNKNOWN > > > 我在这个过程中丢失了一些数据,但我不能说为什么,事实上我比较了两个字节[],一个在串行化之后与deserializzation之后的那个,但它们是相同的。 > > 当我尝试使用方法*coldWallet.signTransaction(req)*签署上述事务时,输入未签名,并且在*区块*链上广播的事务将被丢弃。 > > *为什么钱包不签署交易?* *这可能是由于数据丢失造成的吗?*当我尝试广播交易时,我宁愿这么认为, > *peerGroup。broadcastTransaction(req.tx)*,那些数据被重新计算。 > > *可能是因为我使用了交易的序列化/反序列化的错误方法?还有另一种实现它的方法吗?* > > 感谢你的支持。 >
-- You received this message because you are subscribed to the Google Groups "bitcoinj" group. To unsubscribe from this group and stop receiving emails from it, send an email to bitcoinj+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.