IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 初识Solidity、Remix与Geth节点结合部署智能合约 -> 正文阅读

[区块链]初识Solidity、Remix与Geth节点结合部署智能合约

初识Solidity、Remix与Geth节点结合部署智能合约


初识Solidity

目前支持智能合约的区块链平台很多,智能合约的开发语言也有多种选择。以太坊智能合约的开发语言主要采用Solidity,(因为以太坊是第一个诞生智能合约的区块链平台,后续区块链平台大多都借鉴了它的智能合约开发环境,所以)目前Solidity是多数主流区块链平台所采用的智能合约开发语言。

示例说明:

下面代码的功能是将Msg值初始化为hello

pragma solidity^0.6.0;
contract hello {
    string public Msg;
    constructor () public {
        Msg = "hello";
    }
}
  • pragma:Solidity的编译控制指令

  • ^0.6.0:指定使用0.6.0版本的编译器对改代码进行编码

    注:也可以指定编译器版本的范围,如:pragma solidity > 0.4.99 < 0.6.0;

  • contract:定义智能合约的关键字

  • hello:自定义的智能合约名称

  • string public Msg::类似于Java中的实例变量

  • constructor:智能合约的构造函数。智能合约在被部署时,其构造函数会被调用

Remix与Geth节点结合部署智能合约

第一步:访问http://remix.ethereum.org/,进入以太坊智能合约在线IDE工具Remix

在这里插入图片描述

第二步:创建并编写sol文件

在这里插入图片描述

第三步:编译

在这里插入图片描述

  • ①切换至编译页
  • ②选择编译器版本
  • ③选择语言
  • ④选择虚拟机版本(上图选择的是拜占庭版虚拟机)
  • ⑤右侧选择要编译的sol文件,然后点击此处进行编译
  • ⑥查看编译后的统计结果(这里有一个警告)

第四步:部署

部署的方式有三种:
在这里插入图片描述

  • JavaScript VM:Remix内置的虚拟机,运行速度快,无需挖矿,测试方便。
  • Injected Web3:单击时会连接浏览器安装的Metamask插件(即:以太坊浏览器钱包插件),很多时候,我们都是通过Metamask钱包将合约部署到主网或测试网。
  • Web3 Provider:单机时,将代表要连接某个以太坊节点,需要指定Geth的连接池。

提示: 本步骤示例演示以Web3 Provider的方式进行部署。

  • 第一步:启动Geth私网节点

    root@ubuntu:~# geth --datadir ./data --networkid 18 --port 30303 --rpc --rpcport 8545 --rpcapi 'db,net,eth,web3,personal' --rpcaddr 192.168.19.129 --rpccorsdomain '*' --gasprice 0 --allow-insecure-unlock console 2> 1.log
    Welcome to the Geth JavaScript console!
    
    instance: Geth/v1.9.10-stable-58cf5686/linux-amd64/go1.13.6
    at block: 0 (Wed, 31 Dec 1969 16:00:00 PST)
     datadir: /root/data
     modules: admin:1.0 debug:1.0 eth:1.0 ethash:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
    
    > 
    
  • 第二步:调用personal.newAccount("密码")创建账户并设置密码

    提示: 若已存在账户,那么可跳过此步骤。

    > personal.newAccount("123")
    "0xf868d8bf6eecf8af25f76fa620e89a280bf3c74f"
    > 
    
    • personal:远程api"类"
    • newAccount:远程api"类"中的"方法"
    • 123:"方法"的参数
    • 0xf868d8bf6eecf8af25f76fa620e89a280bf3c74f:得到的账户地址
  • 第三步:解锁账户

    提示: 对于Geth内的账户,需要解锁后才可使用

    > eth.accounts
    ["0xf868d8bf6eecf8af25f76fa620e89a280bf3c74f"]
    > acc0=eth.accounts[0]
    "0xf868d8bf6eecf8af25f76fa620e89a280bf3c74f"
    > personal.unlockAccount(acc0,"123")
    true
    > 
    
    • eth.accounts:查看所有账户
    • acc0=eth.accounts[0]:令eth.accounts[0]账户为默认账户
    • personal.unlockAccount(acc0,"123"):解锁acco所在表的账户,此时需要输入早该账户的密码
  • 第四步:返回Remix界面,选择Web3 Provider部署。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mTwMX85m-1630768103790)(../repository/image-20210830012221298.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p9FsSTbf-1630768103793)(../repository/image-20210830012506682.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IjfXPg9i-1630768103796)(../repository/image-20210904212920759.png)]

  • 第五步:启动挖矿,完成交易。

    区块链的每次智能合约的执行都是一次交易,这个交易需要挖矿才能被打包到区块中,只有被打包到区块中,才代表交易执行成功了。需要启动挖矿,这也是区块链平台的最大特点。

    合约要想跑,挖矿少不了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kII4UeLY-1630768103799)(../repository/image-20210904214248861.png)]

  • 第六步:验证一下。

    提示:因为挖矿存在一定的概率问题,所以上一步执行后进行这一步验证时,可能需要等一会儿才会出来部署成功的结果(即:可能需要等一会儿才会出来交易的结果),挖矿给力就比较快,挖矿不给力就等得久。

    注:本人等了约10分钟。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3HQZwRW3-1630768103803)(../repository/image-20210904215817446.png)]


^_^ 整理自《Go语言区块链应用开发从入门到精通》高野 编著

^_^ 本文已经被收录进《程序员成长笔记》 ,笔者JustryDeng

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-09-07 10:52:08  更:2021-09-07 10:53:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:22:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码