如何在光谱链上使用光子()
什么是光子网络(Photon Network)?
“闪电网络是什么?”
“比特币的链下扩容方式啊”
“雷电网络是什么?”
“以太坊的链下扩容方式啊”
“光子网络是什么?”
“...没听说过”
“什么?都2018年了,你还没听说过光子网络,那你可真是out到家了..”
“已经有了雷电网络,为什么还会有光子网络?”
“因为光子网络比雷电网络更强大!我们光子网络有的特性雷电没有..”
“我不信?口说无凭”
“好,那我给你捋一捋..”
- 广泛的跨平台和移动设备适配应用(雷电网络是不支持移动设备的哦)
- 精简的安全保护(状态恢复)机制
- 惩罚机制
- 无网支付
- 跨链支付,光子网络可以在不借助第三方的情况下实现链下原子资产转换
“来不及解释了,赶紧上车吧怎么使用光子网络(Photon Network)? 连接以太坊或者光谱网络->
光子网络主网已经上线”
“听起来挺高大上的,可是我看了半天也没看明白怎么入门使用你这玩意儿啊?”
“上车!”
这里我以光谱测试链为例,你也可以选择在以太坊公链或者私链上使用光子网络。
- 安装光谱
具体的步骤可以参考官方文档。 - 连接光谱测试链
本地连接到光谱测试链,运行以下脚本,如果你是第一次连接,那么可能会需要一段时间来同步数据。
smc--testnet--port 60505--ws--wsapi "eth,admin,web3,net,debug,personal"--rpc--rpccorsdomain "*"--rpcapi "eth,admin,web3,net,debug,personal"--wsaddr "0.0.0.0"--rpcaddr "0.0.0.0" --wsport 28546--rpcport 28545 --wsorigins "*"--datadir ./spectrumtest
同步数据的时候,你可以先创建一些账号,你可以选择用以太坊
geth
或者光谱smc
创建,会生成一个存有你账号私钥的keystore
文件。smc account new
安装光子网络
go get github.com/SmartMeshFoundation/Photon/
cd $GOPATH/github.com/SmartMeshFoundation/Photon/cmd/Photon
./build.sh
安装好光子以后,我们运行脚本启动光子节点。
echo run photon...
photon --datadir=.photon--address="0x10b256b3c83904d524210958fa4e7f9caffb76c6" --keystore-path ~/geth_private_data/ky --registry-contract-address 0xf62426108EeC34d86Fe2854B5E319043e11E8dC4 --password-file ~/geth_private_data/pass.txt--eth-rpc-endpoint ws://127.0.0.1:28546
echo "quit ok"
这几个参数意义:
- --datadir 储存本地数据库的路径
- --address 节点地址
- --keystore-path 私钥文件路径
- --password-file 私钥密码路径(就是创建账户时候设置的私钥密码)
- --registry-contract-address 合约地址(光子就是运行在光谱链上的智能合约系统)
- --eth-rpc-endpoint 连接测试链全节点
光谱的测试链上已经部署了合约:
0xb3aE919aB595f5844cba80499ee6423688E06F89
- 如果你的账户里拥有ERC20token,且在测试链上拥有
SMT
,那么你就可以直接使用了,只需要把脚本里面的合约地址改成:0xb3aE919aB595f5844cba80499ee6423688E06F89
即可。
- 如果账户里没有ERC20koken,你也可以用我们提供的小工具(
newtestenv
)通过自己手动去部署合约生成token,当然这也是需要花费SMT
的
- 怎么获得测试链的
SMT
?可以去社区找小伙伴要..
- Alice
- 钱包地址:
0x10b256b3C83904D524210958FA4E7F9cAFFB76c6
- 持有某种ERC20koken:
0xE328d7022e4e3AcFee9C80bBD95Dc2701Fb4eb8B
- 在光谱测试链上拥有一定量的
SMT
- 钱包地址:
- Bob
- 钱包地址:
0x151E62a787d0d8d9EfFac182Eae06C559d1B68C2
- 持有某种ERC20koken:
0xE328d7022e4e3AcFee9C80bBD95Dc2701Fb4eb8B
- 在光谱测试链上拥有一定量的
SMT
Alice 怎么通过光子网络与Bob进行交易呢?
通过上面的脚本启动节点
Alice
echo run photon...
photon --datadir=.photon --api-address=127.0.0.1:6001 --listen-address=127.0.0.1:60001 --address="0x10b256b3c83904d524210958fa4e7f9caffb76c6" --keystore-path ~/geth_private_data/ky --registry-contract-address 0xb3aE919aB595f5844cba80499ee6423688E06F89 --password-file ~/geth_private_data/pass.txt--eth-rpc-endpoint ws://127.0.0.1:28546
echo "quit ok"
Bob
echo run photon...
photon --datadir=.photon --api-address=127.0.0.1:6002 --listen-address=127.0.0.1:60002 --address="0x151E62a787d0d8d9EfFac182Eae06C559d1B68C2" --keystore-path ~/geth_private_data/ky --registry-contract-address 0xb3aE919aB595f5844cba80499ee6423688E06F89 --password-file ~/geth_private_data/pass.txt--eth-rpc-endpoint ws://127.0.0.1:28546
echo "quit ok"
首先我们要把自己拥有的token注册到合约上面,可以通过接口(这里是需要花费gas的,所以需要账号里面有一定量的
SMT
)PUT http://127.0.0.1:6001/api/1/tokens/0xE328d7022e4e3AcFee9C80bBD95Dc2701Fb4eb8B
然后Alice和Bob打开通道,Alice存钱200token,调用接口
PUT http://127.0.0.1:6001/api/1/channels
请求参数:
{
"partner_address": "0x0D0EFCcda4f079C0dD1B728297A43eE54d7170Cd",
"token_address": "0x76fCe6fF759B208D27E4D48828F820d79d1719f3",
"balance": 200,
"settle_timeout": 150
}
返回结果
{
"channel_identifier": "0x03ce1b687a3f7668bb7499ccc503d299387bdb60422d119f4e81646630c176df",
"open_block_number": 1212719,
"partner_address": "0x151E62a787d0d8d9EfFac182Eae06C559d1B68C2",
"balance": 200,
"partner_balance": 0,
"locked_amount": 0,
"partner_locked_amount": 0,
"token_address": "0xE328d7022e4e3AcFee9C80bBD95Dc2701Fb4eb8B",
"state": 1,
"state_string": "opened",
"settle_timeout": 150,
"reveal_timeout": 10
}
Alice想给Bob转账100token,调用接口
POST http://127.0.0.1:6001/api/1/transfers/0xE328d7022e4e3AcFee9C80bBD95Dc2701Fb4eb8B/0x151E62a787d0d8d9EfFac182Eae06C559d1B68C2
请求参数:
{
"amount":100,
"fee":0,
"is_direct":false
}
返回结果:
{
"initiator_address": "0x10b256b3C83904D524210958FA4E7F9cAFFB76c6",
"target_address": "0x151E62a787d0d8d9EfFac182Eae06C559d1B68C2",
"token_address": "0xE328d7022e4e3AcFee9C80bBD95Dc2701Fb4eb8B",
"amount": 100,
"lockSecretHash": "0xea44185a3f12daa1a527ef7873accc6530a94b77df07268efec81f6a89792ff1"
}
此时可以查询通道,发现Bob在通道里面的余额已经变成100,调用接口
GET http://127.0.0.1:6001/api/1/channels
返回结果:
[
{
"channel_identifier": "0x03ce1b687a3f7668bb7499ccc503d299387bdb60422d119f4e81646630c176df",
"open_block_number": 1212719,
"partner_address": "0x151E62a787d0d8d9EfFac182Eae06C559d1B68C2",
"balance": 100,
"partner_balance": 100,
"locked_amount": 0,
"partner_locked_amount": 0,
"token_address": "0xE328d7022e4e3AcFee9C80bBD95Dc2701Fb4eb8B",
"state": 1,
"state_string": "opened",
"settle_timeout": 150,
"reveal_timeout": 10
}
]
到这里,一个简单的光子链下交易就完成了,如果想要把通道里面的钱结算到链上,可以调用合作结算通道接口
PATCH http://127.0.0.1/api/1/channels/0x03ce1b687a3f7668bb7499ccc503d299387bdb60422d119f4e81646630c176df
请求参数:
{"state":"closed",
"force":false
}
此时通道已经成功结算关闭,可以去链上查询双方余额变化。
到这里,一个完整的光子使用流程:注册token-->打开通道/存钱-->交易-->合作结算/取钱关闭通道
如果你的账号里没有ERC20token,你也可以使用我们提供的小工具
newtestenv
快速部署合约,生成token,创建通道,建立复杂路由来体验光子网络。当然这些都是需要消耗gas的,所以需要你的账号拥有SMT
。安装:
go get github.com/SmartMeshFoundation/Photon/
cd $GOPATH/github.com/SmartMeshFoundation/Photon/cmd/tools/newtestenv
go install
部署合约:
newtestenv--keystore-path ~/geth_private_data/ky--eth-rpc-endpoint ws://127.0.0.1:28546
【如何在光谱链上使用光子()】一个简单的光子网络连接到光谱测试链教程就结束了,想要了解光子的更多特性,请移步官方文档,欢迎大家在使用过程中积极反应问题。
推荐阅读
- 任时光绽放成六月繁花
- 我从来不做坏事
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 樱花雨
- 如何寻找情感问答App的分析切入点
- 拍照一年啦,如果你想了解我,那就请先看看这篇文章
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- 人如果没梦想,和咸鱼有什么区别(自媒体时代把握住就能咸鱼翻身)
- 如何在Mac中的文件选择框中打开系统隐藏文件夹