Skip to content

> 波场官方trident-java文档 > > m1 mac Android protobuf 遇到的问题 > > tron中文文档 > > trc20离线签名的demo,有trxdent-java,就不需要这个了,使用http的方式可以看看 > > trc20离线签名的demo,有trxdent-java,就不需要这个了,使用http的方式可以看看,另外一个demo > > 要继续学习tron可以看看

打包依赖

下载源文件trident-java

这里选择main分支

在这里插入图片描述

进入trident-java文件夹,可以看到有build.gradle,如果是mac系统,修改一下依赖

groovy
protoc {
				// 原来的依赖
        artifact = 'com.google.protobuf:protoc:3.12.0'
        // 修改之后的依赖
        artifact = 'com.google.protobuf:protoc:3.12.0:osx-x86_64'
    }
    plugins {
        grpc {
 						// 原来的依赖
            artifact = 'io.grpc:protoc-gen-grpc-java:1.31.0'
						// 修改之后的依赖
            artifact = 'io.grpc:protoc-gen-grpc-java:1.31.0:osx-x86_64'
        }
    }

IDEA打包image-20231220205836156

打包之后,在每个子模块的build/libs/xxx-jar

image-20231220210042662

下面的操作就可以跟着开发文档了,创建项目

pom.xml

xml
<dependency>
  <groupId>org.tron.trident</groupId>
  <artifactId>abi</artifactId>
  <version>0.8.0</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/src/main/resources/jar/abi-0.8.0.jar</systemPath>
</dependency>
<dependency>
  <groupId>org.tron.trident</groupId>
  <artifactId>utils</artifactId>
  <version>0.8.0</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/src/main/resources/jar/utils-0.8.0.jar</systemPath>
</dependency>
<dependency>
  <groupId>org.tron.trident</groupId>
  <artifactId>core</artifactId>
  <version>0.8.0</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/src/main/resources/jar/core-0.8.0.jar</systemPath>
</dependency>

<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-all</artifactId>
    <version>1.48.1</version>
</dependency>

查询余额的代码

java
public static String privateKey = "私钥";
	public static String apiKey = "apiKey";//波场申请
	@Test
	public void getCount() {
		//生成密钥对
		KeyPair keyPair = new KeyPair(privateKey);
		//地址转换
		System.out.println(keyPair.toHexAddress());
		ApiWrapper wrapper = ApiWrapper.ofMainnet(privateKey,apiKey);
		//账号查询
		Account account = wrapper.getAccount("账户地址");
		//查询余额
		System.out.println(account.getBalance());
		System.out.println(account.getCreateTime());
	}

转账示例

java
public static String transferTrc(String fromAddress, String toAddress, String amount, String contractAddress, String privateKey) {
    ApiWrapper wrapper = ApiWrapper.ofNile(privateKey);
    String ret = "";
    try {
        //根据合约地址获取封装好的合约
        Contract contract = wrapper.getContract(contractAddress);
        //创建一个TRC20合约对象
        Trc20Contract token = new Trc20Contract(contract, fromAddress, wrapper);
        //获取想要转移的数量
        BigInteger sunAmountValue = Convert.toSun(amount, Convert.Unit.TRX).toBigInteger();
        //设置最大手续费
        long maxTrx = Convert.toSun("17", Convert.Unit.TRX).longValue();
        ret = token.transfer(toAddress, sunAmountValue.longValue(), 0, "", maxTrx);
        System.out.println("哈希:" + ret);
    } catch (Exception e) {
        System.out.println("转移失败:" + e.getMessage().toString());
    } finally {
        wrapper.close();
    }
    return ret;
}

技术笔记