交易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点击后将会唤醒链克口袋.

触碰云高性价20.8元/月,香港云服务器,美国cn2/香港cn2线路,4核4G15M仅115.2元/月起

触碰云怎么样?触碰云是一家成立于2019年的商家。触碰云主营香港/美国 VPS服务器、独立服务器以及免备案CDN。采用的是kvm虚拟构架,硬盘Raid10,Cn2线路,去程电信CN2、移动联通直连,回程三网CN2。最低1核1G带宽1M仅20.8元/月,不过这里推荐香港4核4G15M,香港cn2 gia线路云服务器,仅115.2元/月起,性价比还是不错的。点击进入:触碰云官方网站地址触碰云优惠码:优...

月神科技-美国CERA 5折半价倒计时,上新华中100G高防云59起!

官方网站:点击访问月神科技官网优惠码:美国优惠方案:CPU:E5-2696V2,机房:国人热衷的优质 CeraNetworks机房,优惠码:3wuZD43F 【过期时间:5.31,季付年付均可用】活动方案:1、美国机房:洛杉矶CN2-GIA,100%高性能核心:2核CPU内存:2GB硬盘:50GB流量:Unmilited端口:10Mbps架构:KVM折后价:15元/月、150元/年传送:购买链接洛...

2021年全新Vultr VPS主机开通云服务器和选择机房教程(附IP不通问题)

昨天有分享到"2021年Vultr新用户福利注册账户赠送50美元"文章,居然还有网友曾经没有注册过他家的账户,薅过他们家的羊毛。通过一阵折腾居然能注册到账户,但是对于如何开通云服务器稍微有点不对劲,对于新人来说确实有点疑惑。因为Vultr采用的是预付费充值方式,会在每月的一号扣费,当然我们账户需要存留余额或者我们采用自动扣费支付模式。把笔记中以前的文章推送给网友查看,他居然告诉我界面不同,看的不对...

curl扩展为你推荐
actualflashBeitragsvolumenphp企业cms最好是开源的企业cms企业推广企业营销活动主要包括哪些内容?企业信息查询系统官网怎么查企业信息是否在网上公示过asp.net网页制作怎么用ASP.NET 做一个网页注册。简单的就行360arp防火墙在哪谁知道360防火墙的arp防火墙文件在哪三友网三友联众集团怎么样?正大天地网二三线城市适合做生鲜b2b电商吗我爱试用网电信爱玩4G定向流量包开通需要交费吗
广东服务器租用 深圳主机租用 mediafire 阿里云代金券 2017年万圣节 tightvnc 地址大全 免费ftp站点 免费个人空间申请 上海域名 php空间推荐 免费防火墙 上海服务器 服务器是干什么用的 网购分享 免费的域名 论坛主机 apnic 重庆联通服务器托管 锐速 更多