当前位置:首页 » 币圈知识 » 合约怎么学

合约怎么学

发布时间: 2023-06-08 09:00:39

① 长安链--智能合约的开发、编译、安装、调用、查询(二)

官方参考文档: https://docs.chainmaker.org.cn/dev/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6.html

    学习智能合约的郑唤开发,通常需要有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

按照大丛岁官方参考文档方式 在 chainmaker-go-contract 容器中执行 ./build.sh
生成main.wasm文件

2)执行TestUserContractHash Test方法

    这里使用的是默认配置文件,如果需要改变端口、连接数、TLS使能等等,需要修改 chainmaker-sdk-go/testdata/sdk_config.yml

② 大家好,我是那个赚了300%的合约小白

巴菲特所言:“投资很简单,却并不容易”,投资的本质是获取与自己认知相符的财富,而并非凭空获取的财富,所以关键是我们要不断加强自己的认知和实践能力。

对于投资者来说,一开始往往是盲目的、从众的,我们都知道币圈行情变化莫测,投资需要理智,但是往往到了真正交易时就自信满满各种操作。

道理我们都懂,但是仍然走不对投资这条路,我想很多人都像我这样,觉得自己在币圈混的时间久了,那些投资的道理就全都懂了。但是没有在真正的投资交易中碰的头破血流,很难在充满诱惑的环境中真正找到教训。

BG的模拟交易大赛让我真实的体验了一下真实交易中的心态起伏,也总结出很多经验。

开始的时候我开了BTCXNBG空头,感觉反正是虚拟盘操作重仓出击,但是后期行情一直上涨,觉得虚拟币套牢也无所谓,到最后果真损失惨重。事后一想比赛与实盘虽然有实际的差别但是道理都是一样的,心态也是一样的,如果是在实盘上操作的话损失是可以想象的,所以懊悔不已。

后面几天有听从分析师的策略,根据策略结合自己的实际情况和开仓习惯认真的进行了几次交易,效果还是很明显的。连着好几单都有大幅盈利!

除了能够在真实的场景中置身其中,体验交易心态的变化和转变,其实我们能够在模拟交易大赛中获得的远不止这些。更多的是对合约交易的整体感知和体会,我想大部分合约小白玩家都有这样的感受,为什么玩合约容易亏损呢?经过几天的合约操作,我总结了以下三点原因:

第一点:专业基础知识缺乏,玩合约就要了解学习相关知识,特别是新手。没有专业知识,只能像盲人一样在投资市场瞎摸,亏损的概率是很大的。在这一点上,BG交易所研究院的课程就非常浅显易懂,对小白用户特别友好。

第二点、缺乏经验无耐心,新手由于对市场不熟悉,也没有操作经验可参考,总想着立即获得利润,在建仓后稍有盈利就会马上平仓,这样的操作往往会错失更大的行情。即使再建仓,收益也要大打折扣。

第三点、因心态不稳定而过度交易,一旦发现行情对自己不利就容易惊慌,只想着降低损失,于是盲目建仓平仓,新手已经无暇顾及自己成交了多少次,是否获利。交易不在于数量,应当注重质量。

这次与其说去参加比赛争夺排名,不如说提前学习熟练合约交易的基础操作,毕竟上来就进行实盘交易的话一不留神损失的就是真金白银,保险起见很多像我一样的保守玩家都会选择在模拟盘中熟悉精进策略技术,或者是玩法规则。等到觉得得心应手,心里有十足的把握再进行实盘交易,那么获取盈利也就顺手拈来了。毕竟合约是当下最火热的投资项目,磨练技能也能迅速抢占头波红利。

投资市场远不像想象中的那么简单,除了市场博弈之外,参与者的情绪和态度也非常重要。投资道理是稳定不变的,决定投资成功与否的是如何灵活运用这些道理。

③ 一学就会,手把手教你用Go语言调用智能合约

智能合约调用是实现一个 DApp 的关键,一个完整的 DApp 包括前端、后端、智能合约及区块 链系统,智能合约的调用是连接区块链与前后端的关键。

我们先来了解一下智能合约调用的基础原理。智能合约运行在以太坊节点的 EVM 中。因此要 想调用合约必须要访问某个节点。

以后端程序为例,后端服务若想连接节点有两种可能,一种是双 方在同一主机,此时后端连接节点可以采用 本地 IPC(Inter-Process Communication,进 程间通信)机制,也可以采用 RPC(Remote Procere Call,远程过程调用)机制;另 一种情况是双方不在同一台主机,此时只能采用 RPC 机制进行通信。

提到 RPC, 读者应该对 Geth 启动参数有点印象,Geth 启动时可以选择开启 RPC 服务,对应的 默认服务端口是 8545。。

接着,我们来了解一下智能合约运行的过程。

智能合约的运行过程是后端服务连接某节点,将 智能合约的调用(交易)发送给节点,节点在验证了交易的合法性后进行全网广播,被矿工打包到 区块中代表此交易得到确认,至此交易才算完成。

就像数据库一样,每个区块链平台都会提供主流 开发语言的 SDK(Software Development Kit,软件开发工具包),由于 Geth 本身就是用 Go 语言 编写的,因此若想使用 Go 语言连接节点、发交易,直接在工程内导入 go-ethereum(Geth 源码) 包就可以了,剩下的问题就是流程和 API 的事情了。

总结一下,智能合约被调用的两个关键点是节点和 SDK。

由于 IPC 要求后端与节点必须在同一主机,所以很多时候开发者都会采用 RPC 模式。除了 RPC,以太坊也为开发者提供了 json- rpc 接口,本文就不展开讨论了。

接下来介绍如何使用 Go 语言,借助 go-ethereum 源码库来实现智能合约的调用。这是有固定 步骤的,我们先来说一下总体步骤,以下面的合约为例。

步骤 01:编译合约,获取合约 ABI(Application Binary Interface,应用二进制接口)。 单击【ABI】按钮拷贝合约 ABI 信息,将其粘贴到文件 calldemo.abi 中(可使用 Go 语言IDE 创建该文件,文件名可自定义,后缀最好使用 abi)。

最好能将 calldemo.abi 单独保存在一个目录下,输入“ls”命令只能看到 calldemo.abi 文件,参 考效果如下:

步骤 02:获得合约地址。注意要将合约部署到 Geth 节点。因此 Environment 选择为 Web3 Provider。

在【Environment】选项框中选择“Web3 Provider”,然后单击【Deploy】按钮。

部署后,获得合约地址为:。

步骤 03:利用 abigen 工具(Geth 工具包内的可执行程序)编译智能合约为 Go 代码。abigen 工具的作用是将 abi 文件转换为 Go 代码,命令如下:

其中各参数的含义如下。 (1)abi:是指定传入的 abi 文件。 (2)type:是指定输出文件中的基本结构类型。 (3)pkg:指定输出文件 package 名称。 (4)out:指定输出文件名。 执行后,将在代码目录下看到 funcdemo.go 文件,读者可以打开该文件欣赏一下,注意不要修改它。

步骤 04:创建 main.go,填入如下代码。 注意代码中 HexToAddress 函数内要传入该合约部署后的地址,此地址在步骤 01 中获得。

步骤 04:设置 go mod,以便工程自动识别。

前面有所提及,若要使用 Go 语言调用智能合约,需要下载 go-ethereum 工程,可以使用下面 的指令:

该指令会自动将 go-ethereum 下载到“$GOPATH/src/github.com/ethereum/go-ethereum”,这样还算 不错。不过,Go 语言自 1.11 版本后,增加了 mole 管理工程的模式。只要设置好了 go mod,下载 依赖工程的事情就不必关心了。

接下来设置 mole 生效和 GOPROXY,命令如下:

在项目工程内,执行初始化,calldemo 可以自定义名称。

步骤 05:运行代码。执行代码,将看到下面的效果,以及最终输出的 2020。

上述输出信息中,可以看到 Go 语言会自动下载依赖文件,这就是 go mod 的神奇之处。看到 2020,相信读者也知道运行结果是正确的了。

热点内容
usdt怎么更改充值地址 发布:2025-07-08 14:59:05 浏览:150
区块链开发公司价格表 发布:2025-07-08 14:51:10 浏览:494
s7挖蚂蚁矿池 发布:2025-07-08 14:51:02 浏览:318
莱特币爆块 发布:2025-07-08 14:49:22 浏览:24
矿池电脑要求 发布:2025-07-08 14:46:25 浏览:308
莱特3十矿机多少钱一台 发布:2025-07-08 14:27:50 浏览:814
espi数字货币 发布:2025-07-08 14:20:36 浏览:782
11月8日北京区块链大会 发布:2025-07-08 14:01:23 浏览:335
币圈大资金流入 发布:2025-07-08 14:00:32 浏览:939
莱特币是多少人民币 发布:2025-07-08 13:42:50 浏览:493