微信小程序支付的主要逻辑集中在后端,前端只需携带支付所需的数据请求后端接口然后根据返回结果做相应成功失败处理即可。本篇文章后端使用的是php,侧重于整个支付的流程和一些细节方面的东西。所以使用其他后端
顺晟科技
2021-06-16 10:46:18
371
实验环境:windows_10系统桀斯客户端混音实度集成开发环境
实验目的:体验智能合约部署及交互
实验过程:
1、编写合约
2、编译合约、获取合约abi、合约二进制代码
3、使用合同定义合约类
4、二进制代码定义为变量
5、部署合约代码
6、查看合约交易明细
7、测试合约命名
8、通过合约名称测试合约函数
首先编写一个简单的合约:
合同样本{
无符号整型公共价值;
功能示例(uint v){
value=v;
}
功能集(uint v){
value=v;
}
函数get()返回常量(uint){
返回值;
}
}
在再搅拌网页编译得到踝肱指数接口和合约的二进制代码、
abi=[{'constant':true,' inputs':[],' name':'value ',' outputs':[{'name': ' ',' type':'uint256'}],' payable':false,' type':'function'},{'constant':false,' inputs ' :[{ ' name ' 33: ' v ','
[{
constant: true,
inputs: [],
名称: '值,
outputs: [{
名称: ' ',
type: 'uint256 '
}],
payable: false,
类型: '函数'
}, {
constant: false,
inputs: [{
名称: 'v ',
type: 'uint256 '
}],
名称: '套装,
outputs: [],
payable: false,
类型: '函数'
}, {
constant: true,
inputs: [],
名称: 'get ',
outputs: [{
名称: ' ',
type: 'uint256 '
}],
payable: false,
类型: '函数'
}, {
inputs: [{
名称: 'v ',
type: 'uint256 '
}],
payable: false,
type: "构造函数"
}]
需要使用eth。合同来定义一个合约类
示例=eth.contract(abi)
{
ab :[{
constant: true,
inputs: [],
名称: '值,
outputs: [{.}],
payable: false,
类型: '函数'
}, {
constant: false,
inputs: [{.}],
名称: '套装,
outputs: [],
payable: false,
类型: '函数'
}, {
constant: true,
inputs: [],
名称: 'get ',
outputs: [{.}],
payable: false,
类型: '函数'
}, {
inputs: [{.}],
payable: false,
type: "构造函数"
}],
eth: {
帐户s :['0x 4c 57 e7e 9 C2 f 728046 DDC 6 e 96052056 a 241 BDB 0a ','0xe 82 e2f 0 a5 Abd 8774767 b 9751659976 F9 C4 f 59181 '],
区块编号: 6225,
coin base : '0x 4c 57 e7e 9 c2f 728046 DDC 6 e 96052056 a 241 BDA ',
编译: {
lll:函数(),
蛇形:函数(),
实度:函数()
},
defaultAccount:未定义,
默认阻止: '最新,
汽油价格: 18000000000,
hashrate: 0,
mining: false,
挂起事务: [],
协议版本: '0x3f ',
syncing: false,
电话:函数(),
合同:函数(abi),
估计气体:函数(),
.
提交交易:函数(),
提交工作:函数()
},
at:函数(地址、回调),
getData:函数(),
new:函数()
}
合约的二进制代码赋值给SampleHEX方便使用
示例hex='0x 6060604052341561000 c 57 Fe 5b 60405160208061013 a 83398101604052808051906020019091905050505050505 b 8060819055505 b 605 f 9806100416039600000000005 b 808190555505 b 605 f 980610004160039600000
把合约代码部署上链
sample=sample.new(1,{from:eth.accounts[0],data:SampleHEX,gas:3000000})
{
ab :[{
constant: true,
inputs: [],
名称: '值,
outputs: [{.}],
payable: false,
类型: '函数'
}, {
constant: false,
inputs: [{.}],
名称: '套装,
outputs: [],
payable: false,
类型: '函数'
}, {
constant: true,
inputs: [],
名称: 'get ',
outputs: [{.}],
payable: false,
类型: '函数'
}, {
inputs: [{.}],
payable: false,
type: "构造函数"
}],
地址:未定义,
交易nhash : ' 0 xee 74 BCB 4461 c 9712 EC 9 ACA 96 a5 a 4a 3c 64 be 1213854d 519 fc 8 e 5432 b 554 f 7a 1 '
}
查看交易细节
样本recpt=eth。GettransActionReceive(' 0 xee 74 BCB 4461 c 9712 EC 9 ACA 96 a5 a 4a 3c 64 be 1213854d 519 fc 8 e 5432 b 554 f 7a 1 ')
{
区块有h : ' 0 xddba 16545 af 882835 FB 9 a 69 a 0 E5 F3 b 9287 c 61664837 D5 ea 0068 b 38575 CB 665 c 5 ',
区块编号: 6246,
合同地址: '0x 7504 fa 9d 64 ab 290844 b 82660d 43 b 310 F8 FBA 0276 ',
累计: 141836,
从: '0x 4c 57 e7e 9 c2f 728046 DDC 6 e 96052056 a 241 BDA ',
gasUsed: 141836,
logs: [],
logsbloom织机:’0x 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
根: '0x d 1093 ecaca 9 cc 0d 10 e 82 a 533 a 15 FEC cedf 7 ff 5c 79 FB 3 EBD 9366 EC 0 b 35 dbef 478 ',
到: null,
交易nhash : ' 0 xee 74 BCB 4461 c 9712 EC 9 ACA 96 a5 a 4a 3c 64 be 1213854d 519 fc 8 e 5432 b 554 f 7a 1 ',
transactionIndex: 0
}
合约命名
合同样本=样本。at('0x 7504 fa 9d 64 ab 290844 b 82660d 43 b 310 F8 FBA 0276 ')
{
ab :[{
constant: true,
inputs: [],
名称: '值,
outputs: [{.}],
payable: false,
类型: '函数'
}, {
constant: false,
inputs: [{.}],
名称: '套装,
outputs: [],
payable: false,
类型: '函数'
}, {
constant: true,
inputs: [],
名称: 'get ',
outputs: [{.}],
payable: false,
类型: '函数'
}, {
inputs: [{.}],
payable: false,
type: "构造函数"
}],
地址: '0x 7504 fa 9d 64 ab 290844 b 82660d 43 b 310 F8 FBA 0276 ',
transactionHash: null,
allEvents:函数(),
get:函数(),
set:函数(),
值:函数()
}
合约查看功能函数get(),然后调用set()函数,再get()查看时已经改变了
samplecontract.get.call()
一
合同样本。准备。SendTransaction(9,{from:eth.accounts[0],gas:3000000})
0x 822 ee 6 FB 4 caceb 7 e 844 c 533 f 7 F3 BC 57806 f 7 CB 3676 FB 3066 EB 848 cc a46 B2 f 38 a '
samplecontract.get.call()
9
我们再打开一个终端,打开集群一的peer02的控制台,直接在到上一个终端部署的智能合约地址并进行设置操作
root @ ubu-区块链2: ~/ether eum-docker/ether eum-docker/ether eum-test net-docker/dockercomposefiles # docker run-I区块链101/ether eum-geth :1。6 .5 geth attach 335845。33343434432
欢迎使用Geth JavaScript控制台!
abi=[{'constant':true,' inputs':[],' name':'value ',' outputs':[{'name': ' ',' type':'uint256'}],' payable':false,' type':'function'},{'constant':false,' inputs ' :[{ ' name ' 33: ' v ','
示例=eth.contract(abi)
示例hex='0x 6060604052341561000 c 57 Fe 5b 60405160208061013 a 83398101604052808051906020019091905050505050505 b 8060819055505 b 605 f 9806100416039600000000005 b 808190555505 b 605 f 980610004160039600000
直接把合约地址赋值并进行设置操作
合同样本=样本。at('0x 7504 fa 9d 64 ab 290844 b 82660d 43 b 310 F8 FBA 0276 ')
samplecontract.get.call()
9
备注:每一次的合约部署及合约交易需要使用挖矿程序来执行交易
16
2021-06
16
2021-06
16
2021-06
16
2021-06
16
2021-06
16
2021-06