Skip to content

Commit

Permalink
Fix [ZH] translation
Browse files Browse the repository at this point in the history
  • Loading branch information
sapjax committed Jul 28, 2024
1 parent c8be176 commit d2139f4
Show file tree
Hide file tree
Showing 18 changed files with 5,510 additions and 5,504 deletions.
12 changes: 6 additions & 6 deletions zh/10/00-overview.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: "用 Truffle 部署以太坊 dapp"
header: "用 Truffle 部署以太坊 dapp"
title: '用 Truffle 部署以太坊 dapp'
header: '用 Truffle 部署以太坊 dapp'
roadmap: roadmap.jpg
path: solidity_advanced
position: 2
Expand All @@ -16,10 +16,10 @@ position: 2

为什么要部署到 **Loom**?毕竟,**_以太坊_** 才是最安全的网络。

是的,我们完全同意。但在以太坊上每个事务都要耗费 _gas_, 因此你的用户就必须为每个事务付费。而且,每个事务确认还得等上至少10秒
是的,我们完全同意。但在以太坊上每个交易都要耗费 _gas_, 因此你的用户就必须为每个交易付费。而且,每个交易确认还得等上至少 10 秒

简而言之,**_在以太坊上,所有事务都受益于相同的安全保障_**。对于面向用户的 dapp 或游戏等,往往并不一定需要这种级别的安全性。事实上,它只会破坏用户体验。
简而言之,**_在以太坊上,所有交易都受益于相同的安全保障_**。对于面向用户的 dapp 或游戏等,往往并不一定需要这种级别的安全性。事实上,它只会破坏用户体验。

**Loom** 上, 用户可以有更快速且零 gas 的事务。这使得 **Loom** 更适合游戏或面向用户的 dapp。
**Loom** 上, 用户可以有更快速且零 gas 的交易。这使得 **Loom** 更适合游戏或面向用户的 dapp。

好了,废话少说!现在就开始吧 😉
好了,废话少说!现在就开始吧 😉
36 changes: 17 additions & 19 deletions zh/10/02.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ title: 开始使用 Truffle
actions: ['checkAnswer', 'hints']
requireLogin: true
material:
terminal:
terminal:
help: |
First, you should probably run `truffle init`. Next, execute `npm install truffle-hdwallet-provider`
commands:
"truffle init":
'truffle init':
hint: truffle init
output: |
Downloading...
Expand All @@ -20,12 +20,12 @@ material:
Compile: truffle compile
Migrate: truffle migrate
Test contracts: truffle test
"npm install truffle-hdwallet-provider":
'npm install truffle-hdwallet-provider':
hint: npm install truffle-hdwallet-provider
output: |
+ truffle-hdwallet-provider@0.0.6
added 1 package from 1 contributor and audited 71402 packages in 5.612s
found 0 vulnerabilities
+ truffle-hdwallet-provider@0.0.6
added 1 package from 1 contributor and audited 71402 packages in 5.612s
found 0 vulnerabilities
---

既然已经安装了 **Truffle**,现在就可以通过运行 `Truffle init` 来初始化我们的新项目了。它所做的就是创建一组文件夹和配置文件,其结构如下:
Expand All @@ -48,35 +48,33 @@ truffle.js

`CryptoZombies` 目录里,`truffle init` 会创建几个目录以及一些 JavaScript 和 Solidity 文件。让我们仔细看看:

- **_contracts_**: **Truffle** 会在在这里找到我们所有的智能合约。为了保持代码有序,我们甚至可以创建诸如 `contracts/tokens` 之类的嵌套文件夹。很简洁吧 😉。
>注意: `truffle init` 会自动添加一个叫 `Migrations.sol` 的合约以及相应的迁移文件。后面我们会对其进行解释。
- **_contracts_**: **Truffle** 会在在这里找到我们所有的智能合约。为了保持代码有序,我们甚至可以创建诸如 `contracts/tokens` 之类的嵌套文件夹。很简洁吧 😉。

- **_migrations_**: 迁移是一个 JavaScript 文件,它告诉 `truffle` 如何部署智能合约
> 注意: `truffle init` 会自动添加一个叫 `Migrations.sol` 的合约以及相应的迁移文件。后面我们会对其进行解释
- **_test_**: 这里我们会放单元测试,它们是 JavaScript 或 Solidity 文件。请记住,合约一旦部署,就不能再更改,因此在部署之前对智能合约进行测试是非常重要的
- **_migrations_**: 迁移是一个 JavaScript 文件,它告诉 `truffle` 如何部署智能合约

- **_truffle.js_** **_truffle-config.js_**: 这些是配置文件,用于存储部署所需的网络设置。**Truffle** 需要两个配置文件,因为 Windows 上 `truffle.js``truffle.exe` 存在于同一个文件夹可能会产生冲突。长话短说 —— 如果你在运行 Windows,建议你删除 `truffle.js` 并使用 `truffle-config.js` 作为默认配置文件。查看 **Truffle** 的<a href="https://truffleframework.com/docs/truffle/reference/configuration" target=_blank>官方文件</a>,以进一步了解
- **_test_**: 这里我们会放单元测试,它们是 JavaScript 或 Solidity 文件。请记住,合约一旦部署,就不能再更改,因此在部署之前对智能合约进行测试是非常重要的

- **_truffle.js_****_truffle-config.js_**: 这些是配置文件,用于存储部署所需的网络设置。**Truffle** 需要两个配置文件,因为 Windows 上 `truffle.js``truffle.exe` 存在于同一个文件夹可能会产生冲突。长话短说 —— 如果你在运行 Windows,建议你删除 `truffle.js` 并使用 `truffle-config.js` 作为默认配置文件。查看 **Truffle** 的<a href="https://truffleframework.com/docs/truffle/reference/configuration" target=_blank>官方文件</a>,以进一步了解。

但是我为什么要使用这个目录结构呢?我不太习惯,而且它看起来很复杂……

嗯,原因有好几个。首先,如果你更改了这些文件夹的名称,**Truffle** 将无法正常运行。


其次,通过遵守此规范,你的项目将很容易被其他开发人员理解。简而言之,如果后面你的团队扩大或有什么变动,使用标准的文件夹结构和代码规范将让事情变得简单。

## truffle-hdwallet-provider

在本课中,我们将使用 _Infura_ 来把代码部署到 **_以太坊_**。这样,我们的用户便可以直接运行该应用程序,他们无需设置自己的 **_以太坊_** 节点或钱包。然而,为了保证安全,_Infura_ 不管理私钥,这也意味着它不能代表我们签署事务易。由于部署智能合约需要 **Truffle** 签署事务,所以我们将需要一个叫做 `truffle-hdwallet-provider` 的工具。它惟一的目的就是处理事务签名
在本课中,我们将使用 _Infura_ 来把代码部署到 **_以太坊_**。这样,我们的用户便可以直接运行该应用程序,他们无需设置自己的 **_以太坊_** 节点或钱包。然而,为了保证安全,_Infura_ 不管理私钥,这也意味着它不能代表我们签署交易易。由于部署智能合约需要 **Truffle** 签署交易,所以我们将需要一个叫做 `truffle-hdwallet-provider` 的工具。它惟一的目的就是处理交易签名

>注意: 也许你会问,为什么我们不在上一章安装 `truffle-hdwallet-provider`, 使用像下面这样的命令:
> 注意: 也许你会问,为什么我们不在上一章安装 `truffle-hdwallet-provider`, 使用像下面这样的命令:
```JavaScript
npm install truffle truffle-hdwallet-provider -g
```

嗯… `truffle init` 命令期望找到一个空目录。如果有任何文件在那里,它就会出错,因此我们需要按照正确的顺序来做,运行 `truffle init` 之后再安装 `truffle-hdwallet-provider`
```JavaScript
npm install truffle truffle-hdwallet-provider -g
```

嗯… `truffle init` 命令期望找到一个空目录。如果有任何文件在那里,它就会出错,因此我们需要按照正确的顺序来做,运行 `truffle init` 之后再安装 `truffle-hdwallet-provider`

# 实战演习:

Expand Down
112 changes: 56 additions & 56 deletions zh/10/05.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,56 +3,57 @@ title: 配置文件
actions: ['checkAnswer', 'hints']
requireLogin: true
material:
editor:
language: javascript
startingCode:
"truffle.js": |
/*
* NB: since truffle-hdwallet-provider 0.0.5 you must wrap HDWallet providers in a
* function when declaring them. Failure to do so will cause commands to hang. ex:
*
* mainnet: {
* provider: function() {
* return new HDWalletProvider(mnemonic, 'https://mainnet.infura.io/<infura-key>')
* },
* network_id: '1',
* gas: 4500000,
* gasPrice: 10000000000,
* },
*/
answer: |
const HDWalletProvider = require("truffle-hdwallet-provider");
// Set your own mnemonic here
const mnemonic = "YOUR_MNEMONIC";
// Module exports to make this configuration available to Truffle itself
module.exports = {
// Object with configuration for each network
networks: {
// Configuration for mainnet
mainnet: {
provider: function () {
// Setting the provider with the Infura Rinkeby address and Token
return new HDWalletProvider(mnemonic, "https://mainnet.infura.io/v3/YOUR_TOKEN")
},
network_id: "1"
},
// Configuration for rinkeby network
rinkeby: {
// Special function to setup the provider
provider: function () {
// Setting the provider with the Infura Rinkeby address and Token
return new HDWalletProvider(mnemonic, "https://rinkeby.infura.io/v3/YOUR_TOKEN")
},
// Network id is 4 for Rinkeby
network_id: 4
}
}
};
editor:
language: javascript
startingCode:
'truffle.js': |
/*
* NB: since truffle-hdwallet-provider 0.0.5 you must wrap HDWallet providers in a
* function when declaring them. Failure to do so will cause commands to hang. ex:
*
* mainnet: {
* provider: function() {
* return new HDWalletProvider(mnemonic, 'https://mainnet.infura.io/<infura-key>')
* },
* network_id: '1',
* gas: 4500000,
* gasPrice: 10000000000,
* },
*/
answer: |
const HDWalletProvider = require("truffle-hdwallet-provider");
// Set your own mnemonic here
const mnemonic = "YOUR_MNEMONIC";
// Module exports to make this configuration available to Truffle itself
module.exports = {
// Object with configuration for each network
networks: {
// Configuration for mainnet
mainnet: {
provider: function () {
// Setting the provider with the Infura Rinkeby address and Token
return new HDWalletProvider(mnemonic, "https://mainnet.infura.io/v3/YOUR_TOKEN")
},
network_id: "1"
},
// Configuration for rinkeby network
rinkeby: {
// Special function to setup the provider
provider: function () {
// Setting the provider with the Infura Rinkeby address and Token
return new HDWalletProvider(mnemonic, "https://rinkeby.infura.io/v3/YOUR_TOKEN")
},
// Network id is 4 for Rinkeby
network_id: 4
}
}
};
---

太棒了!你已经成功地编译了源代码并创建了迁移文件。

在部署之前还有一件事要做。我们必须编辑配置文件,来告诉 **Truffle** 我们想要部署到哪些网络。
Expand All @@ -61,9 +62,9 @@ material:

## 以太坊测试网络

好几个 **_以太坊_** 公共测试网络允许你在将合约部署到主网之前免费测试(请记住,一旦将合约部署到主网后,就不能再更改了)。这些测试网使用与主网不同的共识算法(通常是PoA),为鼓励全面测试,Ether 免费试用。Ether is free to encourage thorough testing.
好几个 **_以太坊_** 公共测试网络允许你在将合约部署到主网之前免费测试(请记住,一旦将合约部署到主网后,就不能再更改了)。这些测试网使用与主网不同的共识算法(通常是 PoA),为鼓励全面测试,Ether 免费试用。Ether is free to encourage thorough testing.

在这节课中,我们将使用 **_Rinkeby_** —— 由以太坊基金会创建的公共测试网络。
在这节课中,我们将使用 **_Rinkeby_** —— 由以太坊基金会创建的公共测试网络。

## truffle.js 配置文件

Expand All @@ -88,11 +89,11 @@ $ cat truffle.js
它只是个空 shell。因此,我们需要更新这个文件,以便将合约部署到 Rinkeby 和以太坊主网。
### Truffle 的硬件钱包 provider
### Truffle 的硬件钱包 provider
还记得第二章吗?
我们让你装了一个叫做 `truffle-hdwallet-provider` 的附加包,好帮助 **Truffle** 签署事务
我们让你装了一个叫做 `truffle-hdwallet-provider` 的附加包,好帮助 **Truffle** 签署交易
现在,我们想要编辑配置文件以使用 `HDWalletProvider`。先得在文件顶部添加一行:
Expand All @@ -114,7 +115,7 @@ var mnemonic = "onions carrots beans ...";
**在本例中,为了简单起见**,我们复制了助记词并将其存储在一个变量中。
### 为 Rinkeby 和以太坊主网设置 Truffle
### 为 Rinkeby 和以太坊主网设置 Truffle
接下来,为了确保 **Truffle** “知道”我们想要部署到哪些网络,我们必须创建两个单独的对象 —— 一个用于 Rinkeby,另一个用于 **_以太坊_** 主网:
Expand All @@ -140,7 +141,7 @@ networks: {
}
```
>注意: provider 值包装在一个函数中,这确保了在需要时才对它进行初始化。
> 注意: provider 值包装在一个函数中,这确保了在需要时才对它进行初始化。
### 快结束了
Expand Down Expand Up @@ -184,5 +185,4 @@ module.exports = {
我们已经为你更新了大部分配置文件。现在来填补缺失的部分吧:
1. 在文件顶部,添加初始化 `truff -hdwallet-provider` 的代码行。
2. 填写 Rinkeby 网络的 `network_id`。如果你不记得该参数的值,请检查上面的代码片段。
26 changes: 12 additions & 14 deletions zh/10/07.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,15 @@ title: 在 Loom 上使用 Truffle!
actions: ['checkAnswer', 'hints']
requireLogin: true
material:
terminal:
help:
You should probably run `npm install loom-truffle-provider`.
commands:
"npm install loom-truffle-provider":
hint: npm install loom-truffle-provider
output: |
+ loom-truffle-provider@0.8.0
added 227 packages from 193 contributors and audited 158456 packages in 50.265s
found 0 vulnerabilities
terminal:
help: You should probably run `npm install loom-truffle-provider`.
commands:
'npm install loom-truffle-provider':
hint: npm install loom-truffle-provider
output: |
+ loom-truffle-provider@0.8.0
added 227 packages from 193 contributors and audited 158456 packages in 50.265s
found 0 vulnerabilities
---

看起来好像没什么,但你刚刚已经部署了 `CryptoZombies` 智能合约!
Expand All @@ -21,17 +20,16 @@ material:

## Loom Basechain

现在,如果你想在 `以太坊` 上构建 DApp,有一点你应该清楚 —— 在主网上,用户需要 `为每笔事务支付 gas 费`。这对于面向用户的 DApp 或游戏来说并不理想。它很容易破坏用户体验。
现在,如果你想在 `以太坊` 上构建 DApp,有一点你应该清楚 —— 在主网上,用户需要 `为每笔交易支付 gas 费`。这对于面向用户的 DApp 或游戏来说并不理想。它很容易破坏用户体验。

相反,在 `Loom` 上,你的用户可以有更快速且无 gas 的事务,这使得它更适合游戏和其他非金融类应用。
相反,在 `Loom` 上,你的用户可以有更快速且无 gas 的交易,这使得它更适合游戏和其他非金融类应用。

这意味着你的 `Loom` 僵尸将是快僵尸!

还不止这些 —— 部署到 `Loom` 与部署到 Rinkeby 或以太坊主网没有什么不同。如果你知道其中一个怎么做,另一个你也没问题。

下一章,我们将带你了解部署到 `Loom`


## loom-truffle-provider

`Loom`,我们使用 **Truffle** 构建、测试和部署我们的智能合约。为了让事情变得简单,我们开发了一个叫做 `provider` 的东西,它使得在 `Loom` 上部署 Truffle 跟在 Rinkeby 或以太坊主网上一样。
Expand All @@ -42,4 +40,4 @@ material:

1. 我们已经让 `loom-truffle-provider` 作为一个 `npm` 包使用。现在来安装吧:

>注意:这一次,不需要让包全局可见。
> 注意:这一次,不需要让包全局可见。
6 changes: 3 additions & 3 deletions zh/10/lessoncomplete.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@
title: 学完啦!
actions: ['checkAnswer', 'hints']
material:
lessonComplete: 1
lessonComplete: 1
---

太厉害了!👏🏻👏🏻👏🏻

你已经掌握了使用 **Truffle** 部署智能合约的技能!

请记住,在 **_Loom_** 上构建将为你带来更快速、无 gas 的事务,是你创建区块链游戏和面向用户型 dapp 的完美选择。与此同时,你的用户也将享受到以太坊提供的安全保障!
请记住,在 **_Loom_** 上构建将为你带来更快速、无 gas 的交易,是你创建区块链游戏和面向用户型 dapp 的完美选择。与此同时,你的用户也将享受到以太坊提供的安全保障!

另一点也请记住,部署到 **_Loom_** 与部署到以太网差不多。你已经知道具体怎么实现,下一个项目就请选择使用最适合你的吧 😉。

当然,这只是一个示例 —— 我们做了几个决定,简化流程,使课程更容易理解。

要进一步了解这些知识,请访问我们的<a href="https://github.com/loomnetwork/loom-js" target=_blank>开发者文档</a>。

祝搬砖愉快!
祝搬砖愉快!
Loading

0 comments on commit d2139f4

Please sign in to comment.