用everitoken新建FungibleToken到转移FungibleToken的例子

2023-10-14 14:30

本文主要是介绍用everitoken新建FungibleToken到转移FungibleToken的例子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先上代码:

 public static void main(String[] args) throws ApiResponseException {// Init test netPrivateKey privateKey = PrivateKey.randomPrivateKey();PublicKey publicKey = privateKey.toPublicKey();NetParams netParams = new TestNetNetParams();// get node info for building the transactionNodeInfo nodeInfo = (new Info()).request(RequestParams.of(netParams));String FTName = getRandomString(5);int id=129;NewFungibleAction newFungibleAction=NewFungibleAction.of(Symbol.of(id,5),FTName,publicKey.toString(),JSONObject.parseObject("{\"name\":\"issue\",\"threshold\":1,\"authorizers\":[{\"ref\":\"[A]"+" "+publicKey.toString()+"\",\""+"weight\":"+"1}]}"),JSONObject.parseObject("{\"name\":\"manage\",\"threshold\":1,\"authorizers\":[{\"ref\":\"[A]"+" "+publicKey.toString()+"\",\""+"weight\":"+"1}]}"),"10000.00000 S#"+id);KeyProvider provider = KeyProvider.of(privateKey.toWif());try{TransactionService transactionService1 = TransactionService.of(netParams);TransactionConfiguration trxConfiguration = TransactionConfiguration.of(nodeInfo,1000000,publicKey);TransactionData NewFT =transactionService1.push(trxConfiguration,Arrays.asList(newFungibleAction),false,provider);System.out.println(NewFT.getTrxId());}catch (ApiResponseException ex){System.out.println(ex.getRaw());}//issue this FungibleIssueFungibleAction issueFungibleAction = IssueFungibleAction.of("100.00000 S#"+id,publicKey.toString(), "test from java");try {TransactionService transactionService = TransactionService.of(netParams);TransactionConfiguration trxConfig = TransactionConfiguration.of(nodeInfo, 1000000,PublicKey.of(publicKey.toString()));TransactionData txData = transactionService.push(trxConfig, Arrays.asList(issueFungibleAction), false,provider);System.out.println(txData.getTrxId());} catch (ApiResponseException ex) {System.out.println(ex.getRaw());}//transfer the FungibleTokenTransferFungibleAction transferFungibleAction = TransferFungibleAction.of("1.00000 S#"+id,publicKey.toString(),"EVT8aNw4NTvjBL1XR6hgy4zcA9jzh1JLjMuAw85mSbW68vYzw2f9H", "test java");// Init transaction service with net parametersTransactionService transactionService = TransactionService.of(netParams);KeyProvider keyProvider = KeyProvider.of(privateKey.toWif());try {// Construct transaction configurationTransactionConfiguration trxConfig1 = TransactionConfiguration.of(nodeInfo, 100000, PublicKey.of(publicKey.toString()), false, null);TransactionData push = transactionService.push(trxConfig1, Arrays.asList(transferFungibleAction), false,KeyProvider.of(privateKey.toWif()));System.out.println(JSON.toJSONString(push));}catch (ApiResponseException ex){System.out.println(nodeInfo);}}public static String getRandomString(int length){String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";Random random=new Random();StringBuffer sb=new StringBuffer();for(int i=0;i<length;i++){int number=random.nextInt(62);sb.append(str.charAt(number));}return sb.toString();}

然后便是解释一下这个代码:

首先开始的

这里是新建一个私钥并把私钥转换成公钥的操作,相当于建立了一个可以新建Token的账户

这里是网络方面的配置,更加直白一点的说是选择一个节点

everitoken有十多个节点分布在世界各地,其中包含一个测试节点,像这里我们选择的就是测试节点(不要钱)

另外这里就是获取这个节点的信息,几乎所有的动作都需要节点的信息

接下来就是新建FungibleToken了()以下简称FT

 

NewFungibleAction newFungibleAction=NewFungibleAction.of(Symbol.of(id,5),FTName,publicKey.toString(),JSONObject.parseObject("{\"name\":\"issue\",\"threshold\":1,\"authorizers\":[{\"ref\":\"[A]"+" "+publicKey.toString()+"\",\""+"weight\":"+"1}]}"),JSONObject.parseObject("{\"name\":\"manage\",\"threshold\":1,\"authorizers\":[{\"ref\":\"[A]"+" "+publicKey.toString()+"\",\""+"weight\":"+"1}]}"),"10000.00000 S#"+id);

这里就是构造一个Action这个Action就是新建一个FT,配置一个新建FT的动作,里面的格式需要正确,可以发现这里格式有点难看清楚我把格式单独拿出来一下:

{"name":"Action","threshold":num(int),"authorizers":[{"ref":"[A] publicKey","weight":num(int)}]}

其中Action可以是issue或者manage

配置好这个FT和动作之后我们就需要把他发送到everitoken那里了

     KeyProvider provider = KeyProvider.of(privateKey.toWif());try{TransactionService transactionService1 = TransactionService.of(netParams);TransactionConfiguration trxConfiguration = TransactionConfiguration.of(nodeInfo,1000000,publicKey);TransactionData NewFT =transactionService1.push(trxConfiguration,Arrays.asList(newFungibleAction),false,provider);System.out.println(NewFT.getTrxId());}catch (ApiResponseException ex){System.out.println(ex.getRaw());}

首先KeyProvider是新建一个私钥提供者,因为在everitoken上每个Action都需要签名

然后便是建立一个TransactionService类的对象,这个对象负责之后的push操作,即把newFungibleAction给push到everitoken上

之后配置trx

然后push

一般按照这个步骤就可以完成一个Action和everitoken的互动

到这里就已经完成了新建FT了

 

接着如果要交易还需要issue该FT才能进行交易,我们这里issue到刚刚创建的那个人的地址

issue操作大同小异:

//issue this FungibleIssueFungibleAction issueFungibleAction = IssueFungibleAction.of("100.00000 S#"+id,publicKey.toString(), "test from java");try {TransactionService transactionService = TransactionService.of(netParams);TransactionConfiguration trxConfig = TransactionConfiguration.of(nodeInfo, 1000000,PublicKey.of(publicKey.toString()));TransactionData txData = transactionService.push(trxConfig, Arrays.asList(issueFungibleAction), false,provider);System.out.println(txData.getTrxId());} catch (ApiResponseException ex) {System.out.println(ex.getRaw());}

首先创建一个Action

然后按照刚刚的步骤

Service->Configuration->push

的方式完成该动作

这里要提的一个是100.00000

这里的小数点后面的“0”的个数就是我们创建FT时候Symbol里面的precesion(精度)的值否则会报错

然后就是交易了

TransferFungibleAction transferFungibleAction = TransferFungibleAction.of("1.00000 S#"+id,publicKey.toString(),"EVT8aNw4NTvjBL1XR6hgy4zcA9jzh1JLjMuAw85mSbW68vYzw2f9H", "test java");TransactionService transactionService = TransactionService.of(netParams);KeyProvider keyProvider = KeyProvider.of(privateKey.toWif());try {TransactionConfiguration trxConfig1 = TransactionConfiguration.of(nodeInfo, 100000,PublicKey.of(publicKey.toString()), false, null);TransactionData push = transactionService.push(trxConfig1, Arrays.asList(transferFungibleAction), false,KeyProvider.of(privateKey.toWif()));System.out.println(JSON.toJSONString(push));}catch (ApiResponseException ex){System.out.println(nodeInfo);}

这里那一串数字是Demo里面提供的交易的对象我不知道卖给谁就直接用Demo里面提供的对象了

可以发现还是老套路:

新建一个Action

然后KeyProvider

Service->Configuration->push

 

 

这篇关于用everitoken新建FungibleToken到转移FungibleToken的例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/211143

相关文章

Windows如何添加右键新建菜单

Windows如何添加右键新建菜单 文章目录 Windows如何添加右键新建菜单实验环境缘起以新建`.md`文件为例第一步第二步第三步 总结 实验环境 Windows7 缘起 因为我习惯用 Markdown 格式写文本,每次新建一个.txt后都要手动修改为.md,真的麻烦。如何在右键新建菜单中添加.md选项呢? 网上有很多方法,这些方法我都尝试了,要么太麻烦,要么不凑效

JavaFX环境的搭建和一个简单的例子

之前在网上搜了很多与javaFX相关的资料,都说要在Eclepse上要安装sdk插件什么的,反正就是乱七八糟的一大片,最后还是没搞成功,所以我在这里写下我搭建javaFX成功的环境给大家做一个参考吧。希望能帮助到你们! 1.首先要保证你的jdk版本能够支持JavaFX的开发,jdk-7u25版本以上的都能支持,最好安装jdk8吧,因为jdk8对支持JavaFX有新的特性了,比如:3D等;

javaScript日期相加减例子

当前时间加上2天 var d = new Date(“2015-7-31”); d.setDate(d.getDate()+2); var addTwo=d.getFullYear()+”年”+(d.getMonth()+1)+”月”+d.getDate()+”日”; “控制台输出===============”+”当前日期加2天:”+addTwo; 使用这种方法,月份也会给你计算.

STM32CubeMX和HAL库-新建项目

目录 新建项目 选择开发板  MCU图形化配置界面总览 MCU配置 新建项目 新建项目包含选择MCU创建项目、选择开发板新建项目和交叉选择MCU新建项目三部分。 1. 选择MCU创建项目 单击主菜单项File→New Project,或Home视图上的ACCESS TO MCU SELECTOR 按钮,都可以打开的New Project from a MCU/MPU对话框。

设计模式大全和详解,含Python代码例子

若有不理解,可以问一下这几个免费的AI网站 https://ai-to.cn/chathttp://m6z.cn/6arKdNhttp://m6z.cn/6b1quhhttp://m6z.cn/6wVAQGhttp://m6z.cn/63vlPw 下面是设计模式的简要介绍和 Python 代码示例,涵盖主要的创建型、结构型和行为型模式。 一、创建型模式 1. 单例模式 (Singleton

JSP 简单表单显示例子

<html><!--http://localhost:8080/test_jsp/input.html --><head><meta http-equiv="Content-Type" content="text/HTML; charset=utf-8"><title>input页面</title></head><body><form action="input.jsp" method

shell循环sleep while例子 条件判断

i=1# 小于5等于时候才执行while [ ${i} -le 5 ]doecho ${i}i=`expr ${i} + 1`# 休眠3秒sleep 3doneecho done 参考 http://c.biancheng.net/cpp/view/2736.html

ElasticSearch 6.1.1 通过Head插件,新建索引,添加文档,及其查询数据

ElasticSearch 6.1.1 通过Head插件,新建索引,添加文档,及其查询; 一、首先启动相关服务: 二、新建一个film索引: 三、建立映射: 1、通过Head插件: POST http://192.168.1.111:9200/film/_mapping/dongzuo/ {"properties": {"title": {"type":

【ReactJS】通过一个例子学习React组件的生命周期

源代码 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Reac

使用git 新建分支以及管理分支

在你的github分支上, 你需要保持你的主分支干净, 我说的干净就是没有任何改变,那么你可以在任何时候从你的主分支修建一个分支。每次, 你想提交一个补丁或者一个新特性时,你需要为它新建一个分支,而这个分支无论如何都会从你的主分支复制过来。        当你要在一个分支做拉请求时, 你也能够继续在其他分支上工作,而且也能够在其它分支上做拉请求。 在你新建一个新分支从主分支上拉下来所有改变之前