今天给各位分享探索长安链:区块链技术在现代社会的应用与发展的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
官方参考文档:https://docs.chainmaker.org.cn/dev/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6.html
1.开发智能合约
1)合约模板
要学习智能合约的开发,通常需要一个demo来学习如何使用API以及如何组织项目。长安链的学习过程也是如此,所以第一步就是获取合约模块。
1.1)拉取镜像:docker pull chainmakerofficial/chainmaker-go-contract:1.1.1
长安链为我们提供了合约开发镜像,其中包含合约模板。
1.2)启动并进入容器:docker run -it --name chainmaker-go-contract -v ${PWD}:/home chainmakerofficial/chainmaker-go-contract:1.1.1 bash
启动chainmaker-go-contract容器并进入,将当前目录挂载到容器的/home目录下。
1.3)解压并分析合约模板cp/home
tar xzvf Contract_go_template.tar.gz
目录结构:
业务逻辑在main.go中, //export注解的方法被编译器识别并用于外部访问。
image.png合约逻辑
save方法支持传入三个参数:file_hash、file_name、time,并使用file_hash作为索引来存储区块链世界状态。
findByFileHash方法支持传入参数file_hash,以file_hash作为搜索条件检索世界状态并返回。合约逻辑可以随意修改,只要后续调用指定导出的方法名即可。
2)编译合约
根据官方参考文档,在chainmaker-go-contract容器中执行./build.sh。
生成main.wasm文件
3)安装、调用、查询合约
下载go sdk代码git clone --recursivehttps://git.chainmaker.org.cn/chainmaker/chainmaker-sdk-go.git
复制加密配置文件rm -rf chainmaker-sdk-go/testdata/crypto-config
cp -r chainmaker-go/build/crypto-config chainmaker-sdk-go/testdata/
编写测试用例
可以根据sdk_user_contract_claim_test.go文件进行修改。
1)创建文件hash_test.gopackage chainmaker_sdk_go
进口(
"chainmaker.org/chainmaker-go/common/random/uuid"
"chainmaker.org/chainmaker-sdk-go/pb/protogo/common"
"fmt"
"github.com/stretchr/testify/require"
‘测试’
"时间"
)
变量(
hashContractName="myhash001"
哈希版本="1.0.0"
hashByteCodePath="./testdata/hash-cc/main.wasm"
)
func TestUserContractHash(t *testing.T) {
fmt.Println("======================创建客户端======================")
客户端,错误:=createClientWithCertBytes()
require.Nil(t, err)
fmt.Println("======================创建admin1======================")
admin1,错误:=createAdmin(orgId1)
require.Nil(t, err)
fmt.Println("======================创建admin2======================")
admin2,错误:=createAdmin(orgId2)
require.Nil(t, err)
fmt.Println("======================创建admin3======================")
admin3,错误:=createAdmin(orgId3)
require.Nil(t, err)
fmt.Println("======================创建admin4======================")
admin4,错误:=createAdmin(orgId4)
require.Nil(t, err)
fmt.Println("======================创建合约========================")
testUserContractHashCreate(t, 客户端, admin1, admin2, admin3, admin4, true, true)
fmt.Println("======================调用合约======================")
fileHash,错误:=testUserContractHashInvoke(客户端,"保存",true)
require.Nil(t, err)
fmt.Println("======================执行合约查询接口=======================")
//txId :="1cbdbe6106cc4132b464185ea8275d0a53c0261b7b1a470fb0c3f10bd4a57ba6"
//文件哈希=txId[len(txId)/2:]
参数:=地图[字符串]字符串{
"file_hash": 文件哈希,
}
testUserContractHashQuery(t, client, "find_by_file_hash", params)
}
func testUserContractHashCreate(t *testing.T, 客户端*ChainClient,
admin1, admin2, admin3, admin4 *ChainClient, withSyncResult bool, isIgnoreSameContract bool) {
分别,错误:=createUserContract(client, admin1, admin2, admin3, admin4,
hashContractName、hashVersion、hashByteCodePath、common.RuntimeType_GASM、[]*common.KeyValuePair{}、withSyncResult)
如果!isIgnoreSameContract {
require.Nil(t, err)
}
fmt.Printf("创建索赔合同resp: %+vn", resp)
}
func testUserContractHashInvoke(客户端*ChainClient,
方法string, withSyncResult bool) (string, error) {
//curTime :=fmt.Sprintf("%d", CurrentTimeMillisSeconds())
curTime :=time.Now().Format("2006-01-02 15:04:05")
文件哈希:=uuid.GetUUID()
参数:=地图[字符串]字符串{
"时间":"123",
"file_hash": 文件哈希,
"file_name": fmt.Sprintf("file_%s", curTime),
}
错误:=invokeUserContract(客户端,hashContractName,方法,"",参数,withSyncResult)
//错误:=invokeUserContractStepByStep(客户端,claimContractName,方法,"",参数,withSyncResult)
如果错误!=nil {
返回"",错误
}
返回文件哈希值,nil
}
func testUserContractHashQuery(t *testing.T, 客户端*ChainClient,
方法字符串,参数map[string]string) {
resp,错误:=client.QueryContract(hashContractName,方法,参数,-1)
require.Nil(t, err)
fmt.Printf("查询索赔合约resp: %+vn", resp)
}2) 执行TestUserContractHash 测试方法
【探索长安链:区块链技术在现代社会的应用与发展】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
听说长安链很厉害,搞技术方面很有底蕴。
有13位网友表示赞同!
想知道长安链目前在行业里都有哪些应用?
有10位网友表示赞同!
长安链和别的区块链项目比起来有什么优势呢?
有8位网友表示赞同!
感觉长安链的名字挺有中国特色的!
有11位网友表示赞同!
有没有人已经用过长安链的平台?体验怎么样?
有8位网友表示赞同!
长安链的发展前景如何?未来会越来越热门吗?
有14位网友表示赞同!
学习一下长安链的技术,感觉可以提升自己的技能。
有16位网友表示赞同!
期待长安链能够带来更多创新和应用!
有5位网友表示赞同!
长安链的开发者团队怎么样?听说很专业!
有11位网友表示赞同!
关于长安链的文档资料哪里可以找到?
有16位网友表示赞同!
我想了解一下长安链的生态圈,有哪些合作伙伴?
有11位网友表示赞同!
长安链的价格波动幅度很大吗?
有8位网友表示赞同!
如何投资长安链呢?有哪些途径?
有9位网友表示赞同!
有没有关于长安链的技术解读文章推荐?
有19位网友表示赞同!
长安链的安全机制怎么样?能够保障用户资产安全吗?
有9位网友表示赞同!
想了解一下长安链的未来发展规划是什么?
有18位网友表示赞同!
感觉长安链未来可能会成为主流区块链平台!
有17位网友表示赞同!
有没有关于长安链的用户体验分享?
有6位网友表示赞同!
学习长安链会需要掌握哪些方面的知识?
有11位网友表示赞同!
长安链的社区活动有哪些?想加入和大家交流一下。
有16位网友表示赞同!