交易curl扩展
curl扩展 时间:2021-04-11 阅读:(
)
享云链接入快速入门享云链接入快速入门启动享云链节点克隆项目构建镜像启动容器运行单节点测试网络启动wallet服务通过节点服务发送区块链交易构造交易使用账户对交易做签名发送交易验证结果节点控制台操作连接控制台通过控制台发送交易通过链克口袋发送转账交易直接生成二维码转账应用端唤醒方式通过以下步骤,用户可以快速学习和接入享云链,并发送区块链交易到所启动的节点上,从而对享云链的整体使用有一个大致的理解,并且能够结合自己的应用使用享云链.
更多的概念解释和操作步骤可以参考[操作指南]和[技术参考]文档.
教程文档主要分为以下四个部分:启动享云链节点、发送享云链交易(普通交易与合约交易)、同步享云链区块、应用与链克口袋交互.
用户可以根据自己的需求参考相关的步骤.
一般基于享云链的应用部署结构如图开发者可遵循以下顺序实现应用开发和享云链接入:1.
gitclonelinchain项目2.
初始化和启动测试环境节点连接3.
启动wallet服务4.
开发合约应用或转账应用,部署合约5.
应用端后台使用wallet服务发送后台合约交易或后台转账交易6.
应用端前端或客户端使用用户参数按照链克口袋协议拼接交易内容,生成二维码或者唤醒链克口袋的链接7.
用户使用链克口袋扫码或者应用端唤醒链克口袋,用户支付链克执行交易8.
应用后台监听peer节点交易,更新数据测试环境测试通过后,可启动正式环境节点与wallet服务接入,部署正式环境合约.
启动享云链节点关于启动享云链节点的步骤,以linkchaingithub文档中的启动步骤为准.
下面以启动本地单节点测试网络为例:克隆项目$gitclonehttps://github.
com/lianxiangcloud/linkchain.
git构建镜像$cdlinkchain$sudodockerimagebuild-tlkbuilder.
构建镜像过程中,会默认执行一次项目编译构建成功后,可以查看到镜像信息启动容器$sudodockerrun-tilkbuilder拉取最新代码$gitpull执行编译打包$.
/build.
sh编译成功后在/src/pack/lkchain/bin/目录能看到编译后的文件:$ll/src/pack/lkchain/bin/查询后版本号,以实际git提交最新版本为准$/src/pack/lkchain/bin/lkchainversion运行单节点测试网络$sudodockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZElkbuilderlatest3e70915811c4Aboutaminuteago2.
24GBtotal89668-rwxr-xr-x1rootroot49804544Aug2702:49lkchainlinkchainversion:0.
1.
0,gitCommit:7f5d2a3e进入docker容器内$sudodockerrun-tilkbuilder初始化$sh/src/scripts/sandbox_start.
shinitpeer~/blockdata/启动节点:$sh/src/scripts/sandbox_start.
shpeer~/blockdata/测试RPC:$curl-H'Content-Type:application/json'-d'{"jsonrpc":"2.
0","id":"0","method":"eth_blockNumber","params":[]}'http://127.
0.
0.
1:41000查看Log:$tail~/blockdata/peer_logs/lkchain.
log启动wallet服务committeecontractcodenil!
!
!
validatorswhitelistcontractcodenil!
!
!
genesisBlockstateHash0x0d8827403cb36d8d176cbf6257915f1b5274ba11ff2891b06a0263946ebf0b57genesisBlocktrieRoot0x0000000000000000000000000000000000000000000000000000000000000000genesisBlockChainID:chainIDblock.
Hash:0x26cb0291c88674df8614a93eb0e1b5e23b82e3117f18dade10acb0cf7c597b2dstartlkchain.
.
.
pid:390{"jsonrpc":"2.
0","id":"0","result":"0x0"}DEBUG2019-08-2703:04:44.
797statusreportmodule=mempoolspecGoodTxs=0goodTxs=0futureTxs=0DEBUG2019-08-2703:04:44.
819Broadcastingproposalheartbeatmessagemodule=consensusheight=3round=0sequence=1DEBUG2019-08-2703:04:46.
820Broadcastingproposalheartbeatmessagemodule=consensusheight=3round=0sequence=2DEBUG2019-08-2703:04:48.
821Broadcastingproposalheartbeatmessagemodule=consensusheight=3round=0sequence=3DEBUG2019-08-2703:04:49.
797statusreportmodule=mempoolspecGoodTxs=0goodTxs=0futureTxs=0DEBUG2019-08-2703:04:49.
865dialOutLoopmodule=conManagermaxDialOutNums=3needDynDials=3DEBUG2019-08-2703:04:49.
865ReadRandomNodesmodule=httpTabletab.
seeds=[]DEBUG2019-08-2703:04:49.
865afterdialRandNodesFromCachemodule=conManagerneedDynDials=3DEBUG2019-08-2703:04:49.
865dialNodesFromNetLoopmodule=conManagerneedDynDials=3DEBUG2019-08-2703:04:50.
822Broadcastingproposalheartbeatmessagemodule=consensusheight=3round=0sequence=4进入钱包启动脚本目录$cd/src/wallet/sbin钱包默认连接本地的peer节点,如果上一步已经启动了一个本地的测试peer,那么现在可以直接启动钱包连接这个peer启动钱包进程$.
/wallet.
shstart新建账户,密码为12345678(实际使用中不能泄露账户密码和私钥文件)解锁钱包,测试账户的密码是"12345678"通过节点服务发送区块链交易通过上面的步骤或自己通过其他方式启动了享云链节点以后,就可以向区块链发送交易来实现自己的区块链应用了.
这里的交易泛指通过享云链做链克转账的交易,和通过部署或执行享云链智能合约来读写数据的交易.
构造交易所有的交易结构都遵循以下结构体:对于链上链克转账的交易,解释为from账户发起交易,向to账户转入value数量的链克,data为空,另外享云链为普通交易扩展了一个remark字段,用于一些额外信息的记录.
对于链上执行合约的交易,解释为由from账户发起合约执行,执行合约账户to的某个方法data(方法加调用参数的编码),如果所执行的方法接收链克,可以通过value转入链克.
gas为执行交易限制消耗的最大手续费数量.
nonce为账户在链上执行的第几笔交易.
gas的估算和nonce值都可以通过wallet服务的接口获取.
下面构造一个普通的转账交易,合约的交易在操作指南中做详细介绍.
普通交易(从内置账户转账给新建账户)$curl-s-XPOSThttp://127.
0.
0.
1:18082-d'{"jsonrpc":"2.
0","method":"personal_newAccount","params":["12345678","thisismytestaccount"],"id":67}'-H'Content-Type:application/json'{"jsonrpc":"2.
0","id":67,"result":"0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784"}curl-s-XPOSThttp://127.
0.
0.
1:18082-d'{"jsonrpc":"2.
0","method":"personal_unlockAccount","params":["0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784","12345678",3600],"id":67}'-H'Content-Type:application/json'{"jsonrpc":"2.
0","id":67,"result":true}tx:{from,to,value,gas,data,nonce}使用from账户(内置账户)0xa73810e519e1075010678d706533486d8ecc8000向to账户(新建的测试账户)0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784转入0xde0b6b3a7640000(转十进制10^18wei=1链克)使用账户对交易做签名每一笔交易发送到链上,都需要经过发送者私钥签名,其他节点在接收到签名的交易时可以验证交易的合法性.
下面是用wallet服务提供的接口为上述两笔交易做签名.
(用户在实际操作时需要将from账户替换成自己生成的账户地址)1.
获取预估手续费数量,执行ltk_estimateGas接口2.
获取账户nonce值,执行ltk_getTransactionByHash接口3.
解锁账户,调用personal_unlockAccount接口4.
使用私钥对交易做签名,调用ltk_signTransaction接口{from:'0xa73810e519e1075010678d706533486d8ecc8000',to:'0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784',value:'0xde0b6b3a7640000'}curl-s-XPOSThttp://127.
0.
0.
1:18082-d'{"jsonrpc":"2.
0","id":"0","method":"ltk_estimateGas","params":[{"from":"0xa73810e519e1075010678d706533486d8ecc8000","to":"0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784","value":"0xde0b6b3a7640000"}]}'-H'Content-Type:application/json'{"jsonrpc":"2.
0","id":"0","result":"0x7a120"}curl-s-XPOSThttp://127.
0.
0.
1:18082-d'{"jsonrpc":"2.
0","id":"0","method":"ltk_getTransactionCount","params":["0xa73810e519e1075010678d706533486d8ecc8000","latest"]}'-H'Content-Type:application/json'{"jsonrpc":"2.
0","id":"0","result":"0x0"}curl-s-XPOSThttp://127.
0.
0.
1:18082-d'{"jsonrpc":"2.
0","method":"personal_unlockAccount","params":["0xa73810e519e1075010678d706533486d8ecc8000","1234",3600],"id":67}'-H'Content-Type:application/json'{"jsonrpc":"2.
0","id":67,"result":true}以上就是构造一个交易和使用账户对交易做签名的过程,最终得到的结构体里的raw就是最终发送到链上所需的数据.
发送交易调用ltk_sendRawTransaction接口将上一步签出的raw发送交易到链上交易发送到链上确认的过程是异步的,发送后会生成一个交易hash,最终的确认结果需要根据hash到链上查询上链状态才能确认是否执行成功.
验证结果上链结果可以通过多种方式验证,比如ltk_getTransactionReceipt/ltk_getTransactionByHash等接口,下面使用ltk_getTransactionReceipt示例:curl-s-XPOSThttp://127.
0.
0.
1:18082-d'{"jsonrpc":"2.
0","id":"0","method":"ltk_signTransaction","params":[{"from":"0xa73810e519e1075010678d706533486d8ecc8000","to":"0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784","value":"0xde0b6b3a7640000","nonce":"0x0","gas":"0x7a120","gasPrice":"0x174876e800"}]}'-H'Content-Type:application/json'{"jsonrpc":"2.
0","id":"0","result":{"raw":"0xf86f8085174876e8008307a120943c4b41b3b769932ce2a48746a7e9dcd9f7d5c784880de0b6b3a76400008082e3e6a07fa9e0fea5022012ff8490abc53686b2638caf764d5a44b8ae1aec901db4e64ea05a01a0cbf195a8abd063176277e10b5914c61a1b54a22cbc27764e787aedbc50","tx":{"nonce":"0x0","gasPrice":"0x174876e800","gas":"0x7a120","to":"0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784","value":"0xde0b6b3a7640000","input":"0x","v":"0xe3e6","r":"0x7fa9e0fea5022012ff8490abc53686b2638caf764d5a44b8ae1aec901db4e64e","s":"0x5a01a0cbf195a8abd063176277e10b5914c61a1b54a22cbc27764e787aedbc50","hash":"0x0cbdfbad48ca93343d458df74bc63a9743e81844199c3fb49c45524d91fbcede"}}}curl-s-XPOSThttp://127.
0.
0.
1:18082-d'{"jsonrpc":"2.
0","id":"0","method":"ltk_sendRawTransaction","params":["0xf86f8085174876e8008307a120943c4b41b3b769932ce2a48746a7e9dcd9f7d5c784880de0b6b3a76400008082e3e6a07fa9e0fea5022012ff8490abc53686b2638caf764d5a44b8ae1aec901db4e64ea05a01a0cbf195a8abd063176277e10b5914c61a1b54a22cbc27764e787aedbc50"]}'-H'Content-Type:application/json'{"jsonrpc":"2.
0","id":"0","result":"0x0cbdfbad48ca93343d458df74bc63a9743e81844199c3fb49c45524d91fbcede"}根据返回结果status=0x1,可知执行成功.
也可以查询一下转入账户的余额变化:节点控制台操作上面的步骤是通过wallet提供的服务发送的交易,这种方式利于程序化服务;另外一些一次性的操作也可以通过节点控制台来实现.
连接控制台测试节点服务启动后,可以通过rpc连接节点Geth控制台服务,默认为端口11000.
curl-s-XPOSThttp://127.
0.
0.
1:18082-d'{"jsonrpc":"2.
0","id":"0","method":"ltk_getTransactionReceipt","params":["0x0cbdfbad48ca93343d458df74bc63a9743e81844199c3fb49c45524d91fbcede"]}'-H'Content-Type:application/json'{"jsonrpc":"2.
0","id":"0","result":{"blockHash":"0x5e2f552028904ca89b1e82c55374b950ecb08f6bb32b78ca537f382e9a7657da","blockNumber":"0x2","contractAddress":null,"cumulativeGasUsed":"0x7a120","from":"0xa73810e519e1075010678d706533486d8ecc8000","gasUsed":"0x7a120","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status":"0x1","to":"0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784","tokenAddress":"0x0000000000000000000000000000000000000000","transactionHash":"0x0cbdfbad48ca93343d458df74bc63a9743e81844199c3fb49c45524d91fbcede","transactionIndex":"0x0"}}curl-s-XPOSThttp://127.
0.
0.
1:18082-d'{"jsonrpc":"2.
0","id":"0","method":"ltk_getAccountInfo","params":["0x0000000000000000000000000000000000000000","0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784"]}'-H'Content-Type:application/json'{"jsonrpc":"2.
0","id":"0","result":{"eth_account":{"address":"0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784","balance":"0xde0b6b3a7640000","nonce":"0x0"},"utxo_accounts":[{"address":"bzTSG8ki1WhzCueTaEu1gUSonEjDotsBg5fPfSbAoKZfGoeGbnhvvs6a1j7uADEmLGZ8d7Biey22ksXzdi1g3biiEnBgPU","index":"0x0","balance":"0x0"}],"total_balance":"0xde0b6b3a7640000","token":"0x0000000000000000000000000000000000000000"}}$cd/src/pack/lkchain/bin$.
/lkchainattachhttp://127.
0.
0.
1:11000WelcometotheGethJavaScriptconsole!
modules:debug:1.
0eth:1.
0net:1.
0personal:1.
0rpc:1.
0txpool:1.
0>通过控制台发送交易1.
查询账户余额2.
解锁账户3.
发送交易4.
查询账户余额通过链克口袋发送转账交易链克口袋是享云链提供的用户端账户与资产管理的客户端软件,用户可以通过链克口袋App保管自己的账户、发起转账、以及扫码或外部应用唤醒执行合约.
当前使用链克口袋执行交易的方式分为以下几种:1.
使用交易内容直接生成二维码方式直接使用交易内容结构拼接字符串生成二维码,对于简单的交易来说(如备注转账),拼接后的字符串长度小于160个字符,生成的二维码对于大多数移动设备来说可以快速识别成功.
如果交易内容过长,拼接后的字符串长度大于160个字符,会导致生成的二维码难以识别,这种情况建议使用第二种二维码活码方式.
2.
应用端唤醒方式应用端可以通过构造唤醒链克口袋的链接,把交易内容传入到链克口袋中来执行交易签名.
下面将继续使用前面构造的交易结构,并且新增一个remark字段用于标记应用方的交易订单信息.
from账户是通过链克口袋执行时选中的账户.
直接生成二维码转账>eth.
getBalance("0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784")1000000000000000000>personal.
unlockAccount("0xa73810e519e1075010678d706533486d8ecc8000")Unlockaccount0xa73810e519e1075010678d706533486d8ecc8000Passphrase:true>eth.
sendTransaction({from:"0xa73810e519e1075010678d706533486d8ecc8000",to:"0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784",value:web3.
toWei(1)})"0x52c8a3e69238135c61087f0c9cdf25e9d04ba7483849840a7ee2d7a1c270732c">eth.
getBalance("0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784")2000000000000000000{to:'0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784',value:'0xde0b6b3a7640000',remark:'2c09cadc2f1040009be98bbfe48062e3'}二维码字符串拼接规则:base64(ptitlubancommon://transferto=tx.
to&value=number(tx.
value)&remark=encodeURL(tx.
remark))可以得到以下的二维码如图应用端唤醒方式通过第三方应用或第三方页面构造请求,请求链接为ptitlubancommon://transferto=0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784&value=1000000000000000000&remark=2c09cadc2f1040009be98bbfe48062e3base64(ptitlubancommon://transferto=0x3c4b41b3b769932ce2a48746a7e9dcd9f7d5c784&value=1000000000000000000&remark=2c09cadc2f1040009be98bbfe48062e3)cHRpdGx1YmFuY29tbW9uOi8vdHJhbnNmZXI/dG89MHgzYzRiNDFiM2I3Njk5MzJjZTJhNDg3NDZhN2U5ZGNkOWY3ZDVjNzg0JnZhbHVlPTEwMDAwMDAwMDAwMDAwMDAwMDAmcmVtYXJrPTJjMDljYWRjMmYxMDQwMDA5YmU5OGJiZmU0ODA2MmUz点击后将会唤醒链克口袋.
2021年恒创科技618活动香港美国服务器/云服务器/高防全场3折抢购,老客户续费送时长,每日限量秒杀。云服务器每款限量抢购,香港美国独服/高防每款限量5台/天,香港节点是CN2线路还不错。福利一:爆品秒杀 超低价秒杀,秒完即止;福利二:云服务器 火爆机型 3折疯抢;福利三:物理服务器 爆款直降 800元/月起;福利四:DDOS防护 超强防御仅 1750元/月。点击进入:2021年恒创科技618活...
4324云是成立于2012年的老牌商家,主要经营国内服务器资源,是目前国内实力很强的商家,从价格上就可以看出来商家实力,这次商家给大家带来了全网最便宜的物理服务器。只能说用叹为观止形容。官网地址 点击进入由于是活动套餐 本款产品需要联系QQ客服 购买 QQ 800083597 QQ 2772347271CPU内存硬盘带宽IP防御价格e5 2630 12核16GBSSD 500GB30M1个IP...
简介酷盾安全怎么样?酷盾安全,隶属于云南酷番云计算有限公司,主要提供高防CDN服务,高防服务器等,分为中国境内CDN,和境外CDN和二个产品,均支持SSL。目前CDN处于内测阶段,目前是免费的,套餐包0.01一个。3G流量(高防CDN)用完了继续续费或者购买升级包即可。有兴趣的可以看看,需要实名的。官方网站: :点击进入官网云南酷番云计算有限公司优惠方案流量3G,用完了不够再次购买或者升级套餐流量...
curl扩展为你推荐
2014年软件产品登记名单(6月第二批)操作httpuctools新浪UC下载地址outlookexpress系统自带的outlook express有什么用?怎么用?163yeah网易yeah邮箱登陆支付宝调整还款日支付宝调整花呗还款日,这个调整有没有对你造成什么影响?ipad代理ipad在哪里买是正品?三友网广州三友集团在韶关分公司么?可信网站可信网站 是自己去注册的还是由做网站 的人帮弄的?powerbydedecms织梦dedecms怎么去掉power by dedecms方法
网站空间商 便宜vps 如何查询域名备案号 美国主机网 eq2 什么是刀片服务器 有奖调查 免费高速空间 服务器硬件防火墙 1元域名 台湾google starry 我的世界服务器ip 电信网络测速器 photobucket 空间申请 免备案cdn加速 97rb 中国电信宽带测速 密钥索引 更多