佛萨奇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开发案例及源码
IPPswap交易所系统开发详细指南丨需求设计丨教程方案丨源码项目
Based on the development of the IPPSwap exchange exchange exchange bottom pool LP pledge mining system you mentioned, the following is an overview of its basic process and elements
|
区块链 数据安全/隐私保护
DAPP众筹互助系统开发|DAPP公排合约系统开发指南
去中心化区块链作为分布式技术的一种创新形式,提供了一种去中心化、透明和可信的数据处理方式
|
存储 前端开发 安全
DAPP区块链商城系统开发(方案逻辑)丨区块链DAPP商城系统开发(案例设计)/开发项目/源码部署
 区块链(Blockchain)是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也称为分布式账本技术(Distributed Ledger Technology)。从本质上看,区块链是通过去中心化和去信任化,集体维护、分布式存储的可靠数据库。
|
安全
交易所开发正式版丨交易所系统开发详细指南/案例开发/功能需求/方案逻辑/项目设计/源码程序
Business requirement analysis: A detailed understanding of the business requirements of the exchange, including supported transaction types, transaction pair settings, fee mechanisms, user management, etc., to ensure that the development is in line with actual needs.
交易所开发源码丨交易所系统开发成熟技术/案例开发/需求功能/项目方案/详细程序/多版本
The development of an exchange system involves multiple aspects and functions. The following are the main functions that may be included in general and some detailed guidelines:
|
存储 区块链 文件存储
DAPP众筹互助公排系统开发(详情功能)DAPP互助模式开发
区块就是很多交易数据的集合,它被标记上时间戳和之前一个区块的独特标记
|
新零售 大数据 云计算
泰山众筹商城系统开发案例详细/方案程序/成熟技术/开发项目/源码平台
  新零售指的就是线上、线下和物流必须结合在一起。也就是说,线下的企业必须走到线上去,线上的企业必须走到线下来,线上、线下同现代物流结合在一起,才能真正创造出新的销售方式。
|
存储 人工智能 安全
Opsea NFT智能合约平台系统开发方案介绍/功能详解/源码说明/项目案例
  DAPP是去中心化应用程序(Decentralized Application),它是建立在区块练技术之上的应用程序,具有去中心化、开放性、透明性、安全性等特点,DAPP可以实现各种功能,例如数字货币钱包、去中心化交易所、去中心化社交网络等。O