三天速成智能合约–DAY1:环境安装

发布于 2021-05-24  290 次阅读


0x00 事件起因

我们组的信安作品赛“被迫”加了一项智能合约的部署,某子剑老师:“智能合约三天就够了”

试了一下,三天确实够了。

本文以Ubuntu-20.04为例,记录一下环境搭建过程。

主要涉及环境:

  • geth
  • npm
  • truffle
  • ganache

0x01 相关概念

这里不妨假设大家已经非常熟悉智能合约、区块链、消息认证、非对称密码等概念与算法,就不做过多介绍了。(其实是太鸽了,还没写,下次一定)

智能合约

智能合约(Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。

https://baike.baidu.com/item/%E5%8C%BA%E5%9D%97%E9%93%BE/13465666

区块链

区块链是一种按照时间顺序将数据区块以链条的方式组合成特定数据结构, 并以密码学方式保证的不可篡改和不可伪造的去中心化共享总账(Decentralized shared ledger),能够安全存储简单的、有先后关系的、能在系统内验证的数据。

广义的区块链技术则是利用加密链式区块结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用自动化脚本代码(智能合约)来编程和操作数据的一种全新的去中心化基础架构与分布式计算范式。

https://cloud.tencent.com/developer/article/1532748

详细概念我们以后再聊(如果我还记得的话)

这里我们编写的智能合约主要是区块链的智能合约,暂时不考虑物联网的合约;区块链具体的链为以太坊

0x02 相关环境

GETH

Geth,Go-Ethereum,以太坊官方客户端软件,由以太坊基金会提供,用Go语言编写的。Geth提供了一个交互式命令控制台,通过命令控制台中包含了以太坊的各种功能(API)。

这里以Ubuntu系统为例,安装过程如下:

sudo add-apt-repository -y ppa:ethereum/ethereum
# 添加官方源
sudo apt-get update
sudo apt-get install ethereum
# sudo apt-get install geth 也是可以的
# 安装geth

如果不能导入官方源可以考虑源码安装:

sudo apt-get install golang
# 安装go语言编译环境
go env -w GOPROXY=https://goproxy.cn
# 更换go语言代理
git clone https://github.com/ethereum/go-ethereum
cd go-ethereum
make all
# 下载安装以太坊
export PATH=$PATH:/home/$USER/go-ethereum/build/bin
# 设置环境变量

其他安装方式可以参考官方文档

看到这个界面说明安装成功:

一些小问题:

  • 网上有直接通过snap安装的,但是我在测试的时候发现snap安装的版本有玄学bug,比如初始化的时候读不了外部文件,一直提示Permission denied......然后折腾了一上午不知道为啥,换官方源安装解决了
  • 源码安装没问题,我的WSL里面用的时源码安装,但是配置GO的环境比较麻烦,WSL每次启动都得改环境变量,非常折腾......要不是WSL用的是kali官方源不支持,谁手动装这玩意

NPM

NPM可以简单的理解为 JavaScript的包管理器,用于下载和部署Nodejs等项目。

安装方式:APT安装npm和nodejs

sudo apt update
sudo apt install nodejs npm

查询版本,出现下图说明安装成功: