创建文章

We are looking for publications that demonstrate building dApps or smart contracts!
See the full list of Gitcoin bounties that are eligible for rewards.

Tutorial Thumbnail
入门 · 30分钟

在Windows系统上编译并安装Algorand及相关开发工具

本教程视频版请参照:https://www.bilibili.com/video/BV1wB4y1P7RV/

本教程参考了教程:https://developer.algorand.org/tutorials/compile-and-run-the-algorand-node-natively-windows/。但如果你仅仅使用以上教程进行安装时,往往即使消耗很长的时间也无法安装成功。主要是由于MSYS2及go的很多资源在国内访问缓慢甚至无法访问。因此,我对教程进行了多处更改,使其适应国内网络。好,话不多说,我们下面就开始在Windows系统上编译并安装Algorand及相关开发工具。

需要的工具和环境

本教程中的主要使用环境如下:

  • Microsoft Windows 10 x64

  • MSYS2

  • Go Language

背景

  1. 本教程如何使用go-algorand中的master分支中的代码进行编译,这个分支中的代码。此分支中的代码并无法保证100%与Algorand官方发布的最新版本程序完全一致。

  2. MSYS2是MSYS的一个升级版,准确的说是集成了pacman和Mingw-w64的Cygwin升级版, 提供了bash shell等linux环境、版本控制软件(git/hg)和MinGW-w64 工具链。与MSYS最大的区别是移植了 Arch Linux的软件包管理系统 Pacman。

  3. 为了方便后文叙述,下文中%msys64%表示MSYS2的安装目录,%USERNAME%表示当前用户名。

步骤

一、安装MSYS2

1.1 下载并安装MSYS2

首先从下面这个链接中下载并安装MSYS2: MSYS2官方网站

注:此软件使用浏览器下载时不出意外的非常慢,建议使用迅雷下载,速度有很大改观。

1.2 MSYS2 更换国内源

注:此部分内容主要参考了https://blog.csdn.net/m0_43414643/article/details/111055356 并根据实际情况进行了参数修改。

对于更换国内源的技术细节不感兴趣的同学可以直接下载附件中的三个文件,替换 %msys64%\etc\pacman.d 目录中的同名文件(替换前请注意备份)。替换完成后可以直接跳到2.3节。如果对其中技术细节感兴趣的同学请继续向下看。

将MSYS2更换国内源需要修改 %msys64%\etc\pacman.d 目录下的三个文件,分别改为如下内容(为了慎重起见,请在修改之前备份原文件):

1、将mirrorlist.mingw32文件内容更改为:

##
## 32-bit Mingw-w64 repository mirrorlist
##

## 清华大学镜像源
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686/
## 中国科学技术大学镜像源
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
## 北京理工大学镜像源
Server = http://mirror.bit.edu.cn/msys2/mingw/i686/
## 上海交通大学镜像源
Server = https://mirrors.sjtug.sjtu.edu.cn/msys2/mingw/i686/

2、将mirrorlist.mingw64文件更改为

##
## 64-bit Mingw-w64 repository mirrorlist
##

## 清华大学镜像源
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/
## 中国科学技术大学镜像源
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
## 北京理工大学镜像源
Server = http://mirror.bit.edu.cn/msys2/mingw/x86_64/
## 上海交通大学镜像源
Server = https://mirrors.sjtug.sjtu.edu.cn/msys2/mingw/x86_64/

3、将mirrorlist.msys文件更改为:

##
## MSYS2 repository mirrorlist
##

## 清华大学镜像源
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch/
## 中国科学技术大学镜像源
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
## 北京理工大学镜像源
Server = http://mirror.bit.edu.cn/msys2/msys/$arch/
## 上海交通大学镜像源
Server = https://mirrors.sjtug.sjtu.edu.cn/msys2/msys/$arch/

1.3 更新包

在开始后续安装之前,需要将MSYS2的包更新到最新状态,具体方法如下:

从开始菜单打开MSYS2 MinGW 64-bit,并运行命令:pacman -Syu。运行命令,会提示输入两次y,输入完成后命令行窗口自动关闭。

从开始菜单打开 MSYS2 MSYS 并运行命令pacman -Su。经过此步骤后更新完成。

更详细过程可以参照MSYS2官方网站

二、安装GIT和GO

打开 MSYS2 MinGW 64-bit.并输入以下命令:

pacman -S --disable-download-timeout --noconfirm git mingw-w64-x86_64-go

echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc

键入以上命令后,会了使GOPATH变量生效,必须重启 MSYS2 MinGW 64-bit ,重启后可以使用 go env 命令验证是go安装是否成功。验证完成后关闭 MSYS2 MinGW 64-bit (注:在进行下一步之前至少要重启一次 MSYS2 MinGW 64-bit

安装完成后使用以下命令设置GO使用国内源:

go env -w GO111MODULE=on

go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct

三、下载源码并安装相关文件

3.1 下载Algorand源码

重新打开 MSYS2 MinGW 64-bit 并使用以下命令克隆Algorand的源码:

git clone https://github.com.cnpmjs.org/algorand/go-algorand

注:由于国内网络的问题,将原github地址替换为国内的一个加速服务器地址,获得到的代码与github完全相同,不影响后续使用。此服务有篡改代码的风险,请读者斟酌选用,由此产生的风险,请读者自行承担。此服务随时有停止的风险,如此服务停止,可以使用:

git clone https://github.com/algorand/go-algorand

替代以上代码,但由于国内网络问题,此过程可能需要较长时间,你可以通过手动下载解压的形式将Algorand的源码放到相应位置,不影响后续操作。

安装完成后显示结果如下:

EditorImages/2021/03/24 12:09/21.jpg

3.2 安装相关文件

为了使GO能够成功的安装相关组件,需要在指定的文件夹中下载一些代码:

mkdir -p ~/go/src/golang.org/x
cd  ~/go/src/golang.org/x
git clone https://github.com.cnpmjs.org/golang/lint.git
git clone https://github.com.cnpmjs.org/golang/tools.git
git clone https://github.com.cnpmjs.org/golang/sys.git
git clone https://github.com.cnpmjs.org/golang/mod.git
git clone https://github.com.cnpmjs.org/golang/xerrors.git

使用以下命令安装相关文件:

cd ~/go-algorand
./scripts/configure_dev.sh

以上代码主要执行了以下三项任务:

  • 安装最新版的 GCC, AutoMake, Python 3 及其他构建项目需要的组件

  • 下载并安装最新版的 shellcheck

  • 安装 GO 语言的相关组件

即使你已经使用了本地源,并做了很多准备,此操作还是需要花费大量时间,请耐心等待。完成后显示结果如下:

EditorImages/2021/03/24 12:10/22.png

四、编译项目

在安装好所有相关组件后编译项目就会非常容易,只需要运行以下命令:

make

此操作需要较长时间,请耐心等待。编译完成后显示结果如下:

EditorImages/2021/03/24 12:10/23.png

五、安装节点

构建完成后,相关的二进制及dll文件都会放置于 ~/go/bin 文件夹中。

到此为止, MSYS2 已经完成了他的使命,你可以直接关闭掉 MSYS2 了。

然后使用 cmd 命令打开Windows系统自带的命令提示行工具。

1) 创建 C:\AlgorandNode, 文件夹并进入此文件夹。

md C:\AlgorandNode
cd C:\AlgorandNode

2) 将编译好的文件拷贝到上面的文件夹中。

copy /Y %msys64%\home\%USERNAME%\go\bin .

3) 创建 data 文件夹并进入此文件夹

md data
cd data

4) 复制创世文件(genesis.json)

在本例中以TestNet 的创世文件为例,你也可以在 installer\genesis\mainnet 和 installer\genesis\betanet 文件夹找到mainnet 和betanet 的创世文件

copy /Y %msys64%\home\%USERNAME%\go-algorand\installer\genesis\testnet\genesis.json .

5) 复制config.json.example文件并重命名为config.json.

copy /Y %msys64%\home\%USERNAME%\go-algorand\installer\config.json.example config.json

6) 打开配置文件并进行一些配置:

notepad config.json

  • 找到 EndpointAddress 项并指定一个固定的端口,如,将其值设定为 “127.0.0.1:8101” 表示指定 8101端口。

  • 根据所使用的网络,将DNSBootstrapID 项设置成相应值,如在本例中使用 TestNet,则将DNSBootstrapID 的值从”<network>.algorand.network” 改为 “testnet.algodev.network”.

  • (推荐) 如果你是一名开发者,你可以将EnableDeveloperAPI 项的值从 false 改为 true. 这样你就可以使用这个节点的Developer API。

  • (可选) 如果你想使用归档模式 (归档模式会存储所有的块而不是只存储最后的1000个块), 将Archival 项的值从 false 改为 true.

  • (必须) 修改完成后请保存文件.

注:

  • 如果开启归档模式,请至少保证有200GB 的空闲磁盘空间.

  • 如果你想了解创世文件更详细的信息,请参照此链接:Node Configuration Settings

7) 返回上级目录

cd ..

六、运行节点

使用以下命令运行节点:

goal node start -d data

使用以下命令查看节点运行状态:

goal node status -d data

七、运行相关的开发工具

所有的开发工具在都在文件夹 C:\AlgorandNode 中,如 goal, kmd, algokey, 等