当前位置:首页 » 币圈知识 » 怎么使用智能合约

怎么使用智能合约

发布时间: 2024-01-06 10:01:45

㈠ 一学就会,手把手教你用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,相信读者也知道运行结果是正确的了。

㈡ 使用Nodejs部署智能合约

实现智能合约的方式很多种,可以用truffle框架来实现,编译,部署。
这里介绍一种简单的使用nodejs来实现,编译,部署的方法。
创建一个nodejs项目,实现一个简单的智能合约。

这个合约实现了一个造币和转币的逻辑。
我们的合约是运行在evm上面的字节码,solidity是静态语言,需要通过编译器生成evm的字节码。

调用 node compile.js ,对BaseToken进行编译,生成字节码。web3中提供了一个部署合约的接口,使用如下,

利用编译生成的abi和bytecode,创建一个合约对象,然后进行发布,等待着异步执行的方法输出合约地址 contractAddress ,这样就完成了部署。不过这种方式有一个问题,就是在发布合约时,你的私钥处于联网状态,
处于安全策略,我们需要尽量避免私钥在联网状态。

以太坊上部署合约是向空地址发送一个附有字节码的签名交易,其中发送者就是这个合约的拥有者。因此我们只需要将合约构建成一笔交易,我们在无网状态下对这笔交易进行签名,然后将签名发送到以太坊网络中。这样能够降低我们私钥被泄漏的风险。
对合约的签名方法如下:

以上对一个合约签名,这里需要注意的问题是,to的地址需要是,空地址。
完成签名之后,我们把这笔交易发送出去就好,最简单的方法就是使用 etherscan的发送Tx的方式 ,一旦发送完成,部署完成,就可以看到合约地址。

㈢ 在线发布智能合约https://remix.ethereum.org的简单使用

Remix IDE是开发以太坊智能合约的在线IDE工具,部署简单的智能合约非常方便

Remix地址:https://remix.ethereum.org/

使用的前提是需要谷歌或者火狐的浏览器,且安装了MetaMask 插件

MetaMask 插件的安装使用可以查看这个链接https://www.jianshu.com/p/cdb9e082d059

接下来我用Remix IDE写一个简单的合约,一切开始都从Hello Word 开始。

默认会有一个Ballot 投票合约,这我我点左上角的添加功能,重新建立一个文件,文件名命名为personal.sol

这里我些一个简单的合约 

solidity 的基本语法可以去这个网站实战练习(https://cryptozombies.io/zh/)这个超爽边玩。

我这里写个say()方法  和给个属性age

合约截图如下:

OK编译没问题,接下来我们在测试网上部署合约,先要确定你的MetaMask 插件是选择的测试网络(我一般选择Ropsten测试网)

此时开始部署,点击浏览器MetaMask插件 确认提交等待测试网络上的矿工处理。

部署成功后点击At Address 可以查看到合约公开的操作方法,每执行一次方法就也就是执行一次合约的事物,这是需要Gas 燃料的,没一步需要矿工处理

OK 此时我们查看一下 age的值 点击age ,可以看到age = 10,调用一下increaseAge  方法给它赋值80,此刻执行一下合约,矿工处理完后,查看一下age 变量已经为80

现在一个超简单的合约已经部署成功了,智能合约是一个很有想象空间的玩意,从简单的合约开始,熟练Solidity 语法。

㈣ TRON TRC20协议如何利用它实现智能合约

㈤ 数字钱包智能合约如何开通的

数字钱包开通步骤:
【1】用户需要下载数字人民币钱包APP,并按照该软件的提示完成注册。
【2】在注册成功并且能顺利进入首页面之后,用户可以在搜索框中搜索【数字货币】功能。
【3】在用户成功打开【数字货币】功能之后,按照步骤完成个人身份确认,最后开启使用即可。
拓展资料:
1.自从数字人民币推出之后,国家也相应的推出了数字货币钱包。自然地,国有六大行开始接受客户数字人民币个人钱包的开通申请。用户可以选择自己常用的银行办理数字货币钱包开通业务,数字现货币钱包有纸质现金支付和银行存款支付或第三方支付方式三种。
2.简单来说,央行数字货币是纸钞的数字化替代,数字货币能像纸钞一样流通。数字货币可以实现双离线支付,收支双方都离线,也能进行支付。除此之外,数字货币还有银行卡充值、二维码收款和付款,以及通过手机号和账号进行转账等功能。但是成功开通用户需要注意,必须保管好密码和账号,同时改密码可以通过记助词进行修改及重置。
3.目前,国家推出的数字货币钱包和数字现金密不可分。钱包可通过手机号和账号进行转账,同时还有钱包注销功能。数字货币钱包有纸质现金支付模式,可直接将现金直接递给对方。还可以通过银行存款支付或是经常使用的第三方支付模支付。
4.数字钱包是指信息和软件的集合体——软件为事物处理提供安全,信息包括支付信息(比如,信用卡号码和截止日期)和交货信息。服务端电子钱包(有时也称精瘦钱包)是企业为客户在服务器上创建和储存的。许多信用卡发行者使用这类数字钱包来核实你的信用卡交易。
操作环境:华为nova5 9.1.1.189
数字人民币1.0.5.0

㈥ 合约交易技巧

尽量选择期限长一点的合约,不然有可能行情还没来就已经到期了,即使再开新仓,要么容易造成沉没成本,要么买入持有成本被抬高。备好充足的保证金。在合约的有效期内也可以高抛低吸,盈利时适当平一点持仓量,亏损幅度比较大了再补回去,这样既可以降低成本又可以提高保证金比例,而且是在现有的资金下。在保证金充足的前提下,仓位又适中时,只要看好的方向没变,合约又还在有效期内最好的办法是,任他涨跌起落——躺下装死。

拓展资料:
2013年6月,796交易所在比特币业内率先开发出了比特币周交割标准期货—T+0双向交易虚拟商品作押易货合约(合约交易)。合约交易的出现结束了此前比特币不能做空的历史,开启了比特币衍生品市场发展繁荣的序幕。
BraveNewCoin价格指数
BraveNewCoin('BNC')7x24无间断地采集全球全球主流加密币交易所的数据,对每种加密币的BNC价格指数(BraveNewCoinPriceIndex,'BPI')分别进行计算,得出所有交易所的最新加权平均价。该平均价是加密币相对美元的名义汇率(即:按美元计价)。
加权平均价
许多交易所使用多种货币进行交易。BNC对每个加密币市场不同的货币的数据进行单独采集,在每个数据收集周期内,计算出每个市场的加权平均价。例如,以人民币交易的比特币(BTC-CNY),其市场加权平均价(MWA)是所有开设这一货币对的交易所的加权均价,用每一个开设这一货币对的交易所过去24小时的成交量进行加权而得出,然后再是换算成美元。
数据收集
加密币交易所提供其交易所的当前数据。BNC进行收集。每个收集周期为5分钟,所收集的数据包括每种加密币的最新成交价以及过去24小时的交易额。如果交易所能提供的话,BNC还将收集每个货币对的最新买价和卖价。如果某交易所某段时间内的数据无法获得,BNC将对此进行报告。BNC将收集新开设交易所的数据。796编者注:只要数据真实,不会歧视规模较小的交易所的数据。
刚开始接触合约可能会觉得它很复杂。其实只要花上几分钟时间,了解几个基本的知识点,就能了解合约是怎么运作的。很多交易者接触合约后,反而觉得合约比现货更容易操作。下面我们来了解一下合约的基本知识。
基本概念-简单就是美
跳:合约的价格会上下变动。变动的最小单位我们称之为“跳”。这跟楼梯上的台阶很像。台阶是楼梯的最小变动单位一样,而“跳”是合约的最小变动单位。
了。

㈦ java中怎么样调用eth的智能合约

一般来说,部署智能合约的步骤为:

  1. 启动一个以太坊节点 (例如geth或者testrpc)。

  2. 使用solc编译智能合约。 => 获得二进制代码。

  3. 将编译好的合约部署到网络。(这一步会消耗以太币,还需要使用你的节点的默认地址或者指定地址来给合约签名。) => 获得合约的区块链地址和ABI(合约接口的JSON表示,包括变量,事件和可以调用的方法)。(译注:作者在这里把ABI与合约接口弄混了。ABI是合约接口的二进制表示。)

  4. 用web3.js提供的JavaScript API来调用合约。(根据调用的类型有可能会消耗以太币。)

㈧ solidity 智能合约(3):使用truffle编译部署及测试合约

先找源码敲一遍,跑起来,后面慢慢讲怎么用solidity编写以太坊智能合约。

这个文件编写在 contracts 目录下

这个文件在 migrations 目录下

这个文件可以创建一个 test 目录,然后放进去,我这里直接放在了根目录,不太规范。

要编译Truffle项目里的合约,请切换到项目工程所在根目录,然后在终端中键入以下内容:

首次运行时,将编译所有合约。 在后续运行中,Truffle将仅编译自上次编译以来有更改的合约。如果我们想覆盖此行为,可以使用 --all 选项运行上面的命令。

编译的目标文件 Artifacts 将放在 build/contracts/ 目录中,相对于项目根目录(如果该目录不存在,将创建该目录。)

这些 Artifacts 是Truffle内部工作的组成部分,它们在成功部署应用程序中起着重要作用。 不要去编辑这些文件,因为这些文件将被合约编译和部署覆盖。

编译成功后

迁移脚本(JavaScript文件)可帮助我们将合约部署到以太坊网络。 这些文件负责暂存我们的部署任务,并且假设我们的部署需求会随着时间的推移而发生变化。 随着项目的发展,我们将创建新的迁移脚本,以进一步推动区块链的发展。 先前运行的部署记录通过特殊的 Migrations 迁移合约记录在链上,详细信息如下。

部署命令

要运行部署,请运行以下命令:

这将部署在项目的 migrations 目录中的所有迁移文件。 最简单的迁移只是一组管理部署脚本。 如果我们的迁移先前已成功运行,则 truffle migrate 将从上次运行的迁移开始执行,仅运行新创建的迁移。 如果不存在新的迁移, truffle migrate 将不会执行任何操作。 我们可以使用 --reset 选项从头开始运行所有迁移。 对于本地测试,确保在执行 migrate 之前安装并运行了 Ganache等 测试区块链。

测试脚本中输入数值 100 ,取出的数值为 64 (这个值是16进制格式,转为十进制就是 100 ).

热点内容
签到领数字货币的软件 发布:2025-05-15 07:09:24 浏览:418
比特币总市值莱特币 发布:2025-05-15 06:57:31 浏览:772
区块链商城东莞 发布:2025-05-15 06:42:11 浏览:591
目前主流数字货币 发布:2025-05-15 06:23:22 浏览:606
数字货币太多如何投资 发布:2025-05-15 06:21:11 浏览:880
罗湖口岸怎么去屯门中心 发布:2025-05-15 06:18:06 浏览:203
哪几个区块链是靠谱的 发布:2025-05-15 06:03:02 浏览:994
比特币合约是怎么涨怎么跌的 发布:2025-05-15 05:41:17 浏览:392
世联资产数字货币总量 发布:2025-05-15 05:40:26 浏览:141
数字货币的经营模式 发布:2025-05-15 05:38:57 浏览:96