玩转ByteBall的文本币(textcoin)
西门幻雪雪vj
发表于 2022-12-6 19:26:04
70
0
0
使用方法
ByteBall中的文本币(textcoin)指的是用-连接的12个单词的字符串,就像下面这样:
element-help-cabbage-text-boat-news-civil-truly-broccoli-obscure-key-thing
文本币不仅可以承载bytes,还可以承载ByteBall上的任何其它资产。
使用ByteBall钱包可以很方便地生成文本币,生成方法如下图所示:
点击SHAREVIAMESSAGE后,就会生成文本币的链接,比如:
https://byteball.org/#textcoin?e ... i-obscure-key-thing
打开链接后,你可以看到
点击Receivefunds,如果你已经安装了ByteBall钱包,你就可以提取其中的文本币了。
不管是12个单词的字符串还是链接,你通过邮件或者即时通信的方式与其他人分享。如果使用12个单词的字符串,在ByteBall钱包中,你可以按照如下步骤就提取文本币:
基本原理
熟悉数字货币的读者应该对12个单词组成的助记词不会感到陌生,这组助记词代表了数字账户的私钥。实际上,文本币本质上就是这个助记词对应账户里面的数字资产。比如,上一节中给出的文本币对应的账户为CB5MYZUALLXKC5FGB4FF57SROAIOSK3R,该账户的余额就代表了文本币的大小。
当我们发送一个文本币时:
ByteBall钱包会随机生成一组12个单词的助记词;
按照用户输入的文本币金额,向助记词对应的账户发送一笔转账,转账金额中包括手续费;
生成文本币链接。
相应地,当我们接收一个文本币时:
ByteBall钱包根据链接或者用户输入的12个单词导入文本币对应账户的私钥;
构造一笔由文本币账户转账到本地账户的交易,并用私钥签名后广播至全网;
本地ByteBall钱包得到文本币中的资产。
从文本币的实现原理来看,它还是比较容易理解的,并没有用到特别复杂的技术。但是,ByteBall的这种创新的用法可以很方便地实现一些功能,比如通过邮件或者即时通信发送数字资产、发红包抢红包等。
代码实现
在ByteBall的核心代码byteballcore中提供了相应的函数用来实现文本币的收发,通过调用相关的函数我们可以很容易地实现文本币的相关功能。
发送文本币时,我们只需要给定需要发送的资产名称asset和数量amount,就可以生成相应的文本币:
varWallet=require('byteballcore/wallet.js');
varaddress="textcoin:"+(Date.now()+"-"+amount);
varopts={
asset:asset,
to_address:address,
amount:amount
};
Wallet.sendMultiPayment(opts,function(err,unit,mnemonics){
if(err){
console.log(err);
}else{
console.log('textcoin:'+mnemonics);
}
});
上述代码仅仅给出了一个大体框架,实际在使用时opts中还需要再设置两个参数paying_addresses和change_address,具体获取方法这里就不再详细阐述了。
接收文本币时,我们只需要给定文本币的12个单词组成的字符串mnemonics和接收文本币的地址address,就可以获取相应的文本币:
varWallet=require('byteballcore/wallet.js')
Wallet.receiveTextCoin(mnemonics,address,function(err,unit,asset){
if(err){
console.log(err);
}else{
console.log('claimasset'+asset+'in'+unit);
}
});
在此基础上,还可以做出更多有意思的功能
成为第一个吐槽的人