java工程打包时进行签名_使用Java SDK实现离线签名

严格来说,tx-signer并不属于SDK,它是bytomd中构建交易、对交易签名两大模块的java实现版。因此,若想用tx-signer对交易进行离线签名,需要由你在本地保管好自己的私钥。

如果你的目的是完全脱离于bytomd全节点,可能需要自己做更多额外的工作。比如,在构建交易时,需要花费若干个utxo(Unspent Transaction Output)作为交易的输入,如果没有全节点则需要自身来维护utxo。当使用tx-signer构建完成一笔交易并签名后,若没有全节点的帮助,也需要自己实现P2P网络协议将交易广播到其他节点。

本文不会对以上技术细节进行讨论,而是利用bytomd全节点查询可用的utxo构建交易,对交易进行签名并序列化后,同样使用bytomd提交交易。

准备工作

将Maven依赖引入到你的项目中

获取SDK源码

git clone https://github.com/Bytom/bytom-java-sdk.git

打包成JAR包并安装到本地的Maven仓库

$ mvn clean install -DskipTests

在项目的POM文件中添加依赖。其中,第一个依赖是bytomd api的封装,可用于查询可用的utxo以及提交交易;第二个依赖用于构建交易以及对交易进行离线签名。

io.bytom

java-sdk

1.0.0

io.bytom

tx-signer

1.0.0

构建交易

普通交易

查询可用的utxo

在本文中,以下将全部使用全节点来查询可用的utxo,你也可以构建一套自己的utxo维护方案。

Client client = Client.generateClient();

UnspentOutput.QueryBuilder builder = new UnspentOutput.QueryBuilder();

builder.accountAlias = "bytom";

List outputs = builder.list(client);

利用SDK只需要四行代码就能查询可用的utxo(SDK具体文档详见java-sdk documentation)。在QueryBuilder中可以指定是否为未确认的utxo(默认false),也可以通过from和count来进行分页查询(默认查询所有)。

假设在当前账户下查询得到这样一个utxo:

{

"account_alias": "bytom",

"id": "ffdc59d0478277298de4afa458dfa7623c051a46b7a84939fb8227083411b156",

"asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",

"asset_alias": "BTM",

"amount": 41250000000,

"account_id": "0G1R52O1G0A02",

"address": "sm1qxls6ajp6fejc0j5kp8jwt2nj3kmsqazfumrkrr",

"control_program_index": 1,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值