佛萨奇dapp开发详细丨佛萨奇dapp系统开发(2.0升级版)丨佛萨奇系统源码流程

简介:  package main//sdk代码中,有且仅有一个main()方法func main(){//main()方法中,下面的代码为必须代码,不建议修改main()方法当中的代码//其中,TestContract为用户实现合约的具体名称err:=sandbox.Start(new(FactContract))if err!=nil{log.Fatal(err)}}

  编写Golang合约

  1.通过go.mod引用合约SDK

  ChainMakerGolang合约SDK支持通过go.mod的方式引用,可直接使用go get引用,示例如下:

  $go get chainmaker.org/chainmaker/contract-sdk-go/v2 v2.3.2

  执行完成后,即可参考下文的编写合约注意事项,调用合约sdk的方法,编写合约。

  2.编写合约注意事项

  代码入口包名必须为main

  代码入口

  package main//sdk代码中,有且仅有一个main()方法func main(){//main()方法中,下面的代码为必须代码,不建议修改main()方法当中的代码//其中,TestContract为用户实现合约的具体名称err:=sandbox.Start(new(FactContract))if err!=nil{log.Fatal(err)}}

  合约必要代码

  //合约结构体,合约名称需要写入main()方法当中type FactContract struct{}//合约必须实现下面两个方法://InitContract()protogo.Response//UpgradeContract()protogo.Response//InvokeContract(method string)protogo.Response//用于合约的部署// return:合约返回结果,包括Success和Errorfunc(fFactContract)InitContract()protogo.Response{return sdk.Success([]byte("Init contract success"))}//用于合约的升级// return:合约返回结果,包括Success和Errorfunc(fFactContract)

  UpgradeContract()protogo.Response{return sdk.Success([]byte("Upgrade contract success"))}//用于合约的调用// param method:交易请求调用的方法// return:合约返回结果,包括Success和Errorfunc(f*FactContract)InvokeContract(method string)protogo.Response{switch method{case"save":return f.save()case"findByFileHash":return f.findByFileHash()default:return sdk.Error("invalid method")}}

  3.合约SDK接口描述

  长安链提供golang合约与链交互的相关接口,写合约时可直接导入包,并进行引用,具体信息可参考文章末尾”接口描述章节”。

  4.编译合约

  当合约编写完成后,则需要编译合约,具体教程如下

  5.使用脚本编译合约

  在合约工程中添加编译脚本build.sh搭建编译环境。

  #!/bin/bashcontractName=$1if[[!-n$contractName]];then echo"contractName is empty.use as:./build.sh contractName"exit 1figo build-ldflags="-s-w"-o$contractName7z a$contractName$contractNamerm-f$contractName

  编译撰写好的智能合约

  其中ContractName请替换成需要安装的合约名称

  ./build.sh ContractName

  编译成功,如下图所示:

  6.手动编译合约

  需要保证是在Linux环境下编译,在此文件夹的当前路径执行如下编译命令:

  #如果需要在其他系统环境下编译合约,请参考Golang的交叉编译修改go build命令。go build-ldflags="-s-w"-o file_name 7z a file_name file_name

  在编译合约时,首先使用golang编译程序。

  编译后使用7zip对编译好的可执行文件进行压缩。

  编译结果输出与使用脚本编译一致。

  7.部署调用合约

  编译完成后,将得到一个.7z格式的合约文件,可将之部署到指定到长安链上,完成合约部署。部署合约的使用教程可详见:部署示例合约。

相关文章
|
区块链 测试技术
DAPP链游开发稳定版丨链游dapp/nft游戏系统开发成熟技术方案及源码详情
随着区块链技术的不断发展,智能合约农场在链游行业中扮演着越来越重要的角色。智能合约农场是一种基于区块链技术的应用程序,它可以帮助链游开发商快速、安全地上线定制游戏软件。本文将介绍智能合约农场在链游行业中的作用以及如何通过智能合约农场快速上线定制游戏软件。
商城dapp系统开发技术分析丨商城dapp开发案例及源码
商城dapp系统开发技术分析丨商城dapp开发案例及源码
|
区块链 数据安全/隐私保护
DAPP众筹互助系统开发|DAPP公排合约系统开发指南
去中心化区块链作为分布式技术的一种创新形式,提供了一种去中心化、透明和可信的数据处理方式
|
存储 前端开发 安全
DAPP区块链商城系统开发(方案逻辑)丨区块链DAPP商城系统开发(案例设计)/开发项目/源码部署
 区块链(Blockchain)是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也称为分布式账本技术(Distributed Ledger Technology)。从本质上看,区块链是通过去中心化和去信任化,集体维护、分布式存储的可靠数据库。
|
算法 安全 数据管理
DAPP流动池兑换模式系统开发|DAPP技术开发
区块链技术作为一种分布式数据库技术,去中心化是其非常重要的特点之一
|
存储 人工智能 安全
Opsea NFT智能合约平台系统开发方案介绍/功能详解/源码说明/项目案例
  DAPP是去中心化应用程序(Decentralized Application),它是建立在区块练技术之上的应用程序,具有去中心化、开放性、透明性、安全性等特点,DAPP可以实现各种功能,例如数字货币钱包、去中心化交易所、去中心化社交网络等。O
DAPP钱包交易所系统开发技术详细/方案项目/案例详细/源码功能
Blockchain technology is generally used to build transaction systems, and it is necessary to ensure that the transaction information is authentic, traceable, and tamper proof. The information of each transaction is confirmed and stored in a block,。
|
存储 算法 区块链
众筹系统DAPP平台开发技术实现
一个真正的DApp应用需要同时满足以下几个条件:应用必须完全开源自治,且只有一个实体控制着该应用超51%token,该应用必须能够根据用户的反馈及技术要求进行升级,且应用升级必须由大部分用户意见达成一致之后方可进行;应用的数据必须加密后存储在公开的区块链上,应用必须拥有token机制,可用基于相同底层区块链平台的通用代币或自行发行新币,矿工对应用维护节点需要得到代币奖励;应用代币的产生必须依据标准的加密算法,有价值的节点可以根据该算法获取应用的代币奖励。
|
新零售 人工智能 大数据
DAPP众筹商城开发(详情版)丨DAPP众筹商城系统开发方案及逻辑丨DAPP众筹商城系统源码模式
The important basis for the existence and development of the "new retail" business model is precisely the gradual improvement of people's requirements for personalization, immediacy, convenience, interactivity, accuracy and fragmentation in the shopping process. To meet the above needs, it depends
|
Go 区块链
智能合约DAPP开发|系统源码案例成熟
This article is compiled and released by **WeChaT: kaifa873**, which is only for reference of project development requirements! **telegram @ sleu88**
106 0

热门文章

最新文章

下一篇
开通oss服务