Skip to content

Commit

Permalink
修改tabs 及 hint 标签 ,以便编译
Browse files Browse the repository at this point in the history
  • Loading branch information
xilibi2003 committed Oct 31, 2019
1 parent ec61937 commit fe7ae91
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 125 deletions.
9 changes: 2 additions & 7 deletions contract-api-reference/.eth-permanent-registrar/controller.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@

下面的示例演示了注册域名所需的步骤。

{% tabs %}
{% tab title="web3.js" %}
**web3.js**
```javascript
const controller = web3.eth.contract(controller_abi).at(controller_address);
async function register(name, owner, duration) {
Expand All @@ -42,11 +41,7 @@ async function register(name, owner, duration) {
}
```

{% hint style="info" %}
For clarity, this example is written using async rather than callbacks. As a result, this example works in web3 1.0.x; note that it will not work in the web3 injected by MetaMask, as this presently is an older version lacking async support.
{% endhint %}
{% endtab %}
{% endtabs %}
> For clarity, this example is written using async rather than callbacks. As a result, this example works in web3 1.0.x; note that it will not work in the web3 injected by MetaMask, as this presently is an older version lacking async support.
## 读取操作

Expand Down
4 changes: 1 addition & 3 deletions contract-api-reference/publicresolver.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@ description: 默认的公共解析器。
* [EIP634](https://eips.ethereum.org/EIPS/eip-634) - Text records \(`text()`\).
* [EIP1577](https://eips.ethereum.org/EIPS/eip-1577) - Content hash support \(`contenthash()`\).

{% hint style="warning" %}
虽然`公共解析器`提供了一个方便的默认解析器,但仍然存在许多其他的解析器实例和版本。调用者**不能**假设域名使用的是公共解析器的最新版本,或是解析器包含了这里描述的所有方法。要检查一个解析器是否支持某个特性,请参见[接口检查支持](publicresolver.md#jie-kou-jian-cha-zhi-chi)
{% endhint %}
> 虽然`公共解析器`提供了一个方便的默认解析器,但仍然存在许多其他的解析器实例和版本。调用者**不能**假设域名使用的是公共解析器的最新版本,或是解析器包含了这里描述的所有方法。要检查一个解析器是否支持某个特性,请参见[接口检查支持](publicresolver.md#jie-kou-jian-cha-zhi-chi)
## 接口检查支持

Expand Down
18 changes: 8 additions & 10 deletions dapp-developer-guide/front-end-design-guidelines.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ description: >-

## 1. 用ENS域名替换以太坊地址

{% hint style="warning" %}
只有当用户为其地址设置了一个[反向记录](dapp-developer-guide/resolving-names#reverse-resolution),并且反向记录(地址 > 域名)能够与[正向解析](dapp-developer-guide/resolving-names#looking-up-ethereum-addresses)(域名 > 地址)完全匹配时,这个ENS域名(作为对应以太坊地址的替代)**才可以被显示出来**

> 警告:只有当用户为其地址设置了一个[反向记录](dapp-developer-guide/resolving-names#reverse-resolution),并且反向记录(地址 > 域名)能够与[正向解析](dapp-developer-guide/resolving-names#looking-up-ethereum-addresses)(域名 > 地址)完全匹配时,这个ENS域名(作为对应以太坊地址的替代)**才可以被显示出来**
因此,作为DApp开发者,首先应该确认用户是否已经为其地址设置了反向记录。而且,由于用户可以自由设置反向记录,即使不属于他的域名或是其他随机字符也可以设置成功,所以,你还应该确认这个反向解析出的域名也能通过正向解析得到原来的地址。请从[这里](dapp-developer-guide/resolving-names#reverse-resolution)和后面的 _'other guidelines'_ 部分了解更多内容。
{% endhint %}


### 1.1 - 将以太坊地址换成ENS域名显示

Expand All @@ -32,9 +32,7 @@ description: >-

**添加一个可视校验和:**使用ENS域名时重要的一点就是得向用户指出,这里的域名是指可以关联以太坊地址或其他散列的ENS域名,而不是指http链接。为此,建议将ENS域名与某种形式的可视校验和(比如地址的[标识、Blockies](http://discuss.conflux.network/t/comparing-the-efficacy-of-visual-checksums-identicons-vs-blockies-vs-custom/59)或其他自定义算法表示)相关联。

{% hint style="danger" %}
**可视校验和**像身份识别一样[可以被欺骗](https://medium.com/@austin_48503/vanity-blockie-miner-for-ethereum-902fccf0a427)或模仿,所以它们**不能算是一种安全机制**。它们只是一个标识符,让用户知道这个域名**只是以太坊地址的另一种表示**
{% endhint %}
> 警告:**可视校验和**像身份识别一样[可以被欺骗](https://medium.com/@austin_48503/vanity-blockie-miner-for-ethereum-902fccf0a427)或模仿,所以它们**不能算是一种安全机制**。它们只是一个标识符,让用户知道这个域名**只是以太坊地址的另一种表示**
* **设计一个缩略版的ENS域名:**ENS域名可以很长,除了不受字符限制之外,用户还可以创建无限数量的子域名以及子域名的子域名,所以可以考虑设计一个缩略版的ENS域名。如果显示了缩略版的域名,则应该提供查看完整域名的方法,例如在悬停时展开整个域名。
* **不是所有的ENS域名都以.eth结尾:**ENS域名通常以.eth结尾。但是,ENS系统目前已经实现了对.xyz和.luxe这两个顶级域名(TLD)的支持,未来还将支持更多的顶级域名。如果你考虑在缩略版的ENS域名中显示TLD部分,请注意这一点。
Expand Down Expand Up @@ -88,11 +86,11 @@ description: >-

### **缓存和更新ENS域名**

如果你的DApp需要在UI界面中显示许多以太坊地址或ENS域名,你还可以考虑在解析(和验证)该域名后,或是用户在输入字段中添加该域名之后,将这个ENS域名**缓存**起来。
如果你的DApp需要在UI界面中显示许多以太坊地址或ENS域名,你还可以考虑在解析(和验证)该域名后,或是用户在输入字段中添加该域名之后,将这个ENS域名**缓存**起来。

你的**开放式UI**可以在**毫无风险的情况下**安全地显示缓存中的域名,例如,用户只是在浏览,并且不需要根据显示的信息采取行动或做出决策,尤其是有风险的决策。
但是,在所有**存在危险的情况下**(如转移ETH、代币或其他值),或者当用户与另一个ENS域名或以太坊地址交互时,你就应该**直接执行实时解析**,并从ENS注册表中获取最新的信息。

此外,考虑到用户可以随时更改ENS注册表中的信息,你还应该**定期验证当前缓存的信息**。为此,你可以订阅相关合约中发生的一些特定**事件**,尤其是[AddrChanged](../contract-api-reference/publicresolver#set-ethereum-address)[NameChanged](../contract-api-reference/publicresolver#set-canonical-name)

### 关于显示以太坊地址的说明(无论有没有ENS域名)
Expand Down
69 changes: 20 additions & 49 deletions dapp-developer-guide/managing-names.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,46 +4,38 @@

ENS中的每个域名都有一个所有者,这个所有者可以是帐户或智能合约,而且是唯一一个可以在ENS注册表中对这个域名进行更改的帐户或合约。域名的所有者可以将所有权转移到任何其他帐户或合约。

{% tabs %}
{% tab title="ethereum-ens" %}
**ethereum-ens**:
```javascript
await ens.setOwner('alice.eth', '0x1234...', {from: ...});
```
{% endtab %}

{% tab title="go-ens" %}
**go-ens**
```go
// opts are go-ethereum's bind.TransactOpts
err := registry.SetOwner(opts, "alice.eth", common.HexToAddress("0x1234..."))
```
{% endtab %}

{% tab title="web3.py" %}
**web3.py**
```python
ns.setup_owner('alice.eth', '0x1234...')
```
{% endtab %}
{% endtabs %}


## 创建子域名

每个域名的所有者都可以根据需要配置子域名,配置子域名是指创建子域名并将其所有者设置为所需地址的过程,这个地址可以与父域名的所有者相同,也可以不同。

{% tabs %}
{% tab title="ethereum-ens" %}
**ethereum-ens**
```text
await ens.setSubnodeOwner('iam.alice.eth', '0x1234...', {from: ...});
```
{% endtab %}

{% tab title="go-ens" %}
**go-ens**
```go
// opts are go-ethereum's bind.TransactOpts
err := registry.SetSubdomainOwner(opts, "alice.eth", "iam", common.HexToAddress("0x1234..."))
```
{% endtab %}

{% tab title="web3.py" %}
**web3.py**
```text
ns.setup_owner('iam.alice.eth', '0x1234...')
```
Expand All @@ -55,17 +47,15 @@ ns.setup_address('iam.alice.eth', '0x1234...')
```

一般情况下,域名应该指向所有者的地址,因此上面函数的第二个参数是可选的(默认值是域名所有者的地址)。
{% endtab %}
{% endtabs %}


## 设置解析器

在启用新创建的域名或子域名之前,必须设置解析器地址。如果有解析器进行升级并支持了一些你希望用到的功能,你也可以重新设置解析器地址。

域名的解析器通常设置为公共解析器,公共解析器是一个"符合标准"的解析器,它能提供常用的功能,但是每个人都可以编写和部署自己的专用解析器,有关详细信息,请参见解析器接口定义。

{% tabs %}
{% tab title="ethereum-ens" %}
**ethereum-ens**
```text
await ens.setResolver('iam.alice.eth', '0x1234...', {from: ...});
```
Expand All @@ -76,19 +66,15 @@ await ens.setResolver('iam.alice.eth', '0x1234...', {from: ...});
const resolver = await ens.resolver('resolver.eth').addr();
await ens.setResolver('iam.alice.eth', resolver, {from: ...});
```
{% endtab %}

{% tab title="go-ens" %}
**go-ens**
```go
// opts are go-ethereum's bind.TransactOpts
err := registry.SetResolver(opts, "iam.alice.eth", common.HexToAddress("0x1234..."))
```
{% endtab %}

{% tab title="web3.py" %}
**web3.py**
不支持自定义解析器。web3.py会在用户调用`setup_address`时,自动使用公共解析器,它不支持设置自定义解析器。
{% endtab %}
{% endtabs %}

注意,更改域名的解析器后,该域名在原解析器上的记录不会自动迁移到新解析器上。要更新解析器记录,需要按照下面的程序来实现。

Expand All @@ -100,60 +86,49 @@ err := registry.SetResolver(opts, "iam.alice.eth", common.HexToAddress("0x1234..

### 更新解析到地址的记录

{% tabs %}
{% tab title="ethereum-ens" %}
**ethereum-ens**
```javascript
await ens.resolver('iam.alice.eth').setAddr('0x1234...', {from: ...});
```
{% endtab %}

{% tab title="go-ens" %}
**go-ens**
```go
resolver, err := ens.NewResolver(client, "iam.alice.eth")
// opts are go-ethereum's bind.TransactOpts
err := resolver.SetAddress(opts, common.HexToAddress("0x1234..."))
```
{% endtab %}

{% tab title="web3.js" %}
**web3.js**
```javascript
ens.setAddress('iam.alice.eth, '0x1234...', {from: ...});
```
{% endtab %}
{% tab title="web3.py" %}
**web3.py**
```python
ns.setup_address('iam.alice.eth', '0x1234...')
```
{% endtab %}
{% endtabs %}
### 更新解析到其他资源的记录
有些ENS库(目前只有ethereum-ens、go-ens和web3.js)支持使用相同的模式更新其他记录类型(内容的散列和文本记录等)。例如,要设置或更新文本记录:
{% tabs %}
{% tab title="ethereum-ens" %}
**ethereum-ens**
```javascript
ens.resolver('iam.alice.eth').setText('test', 'Test record', {from: ...});
```
{% endtab %}
{% tab title="go-ens" %}
**go-ens**
```go
// opts are go-ethereum's bind.TransactOpts
err := resolver.SetContenthash(opts, []byte{0x12, 0x34...})
err := resolver.SetAbi(opts, "Sample", `[{"constant":true,"inputs":...}]`, big.NewInt(1))
err := resolver.SetText(opts, "Sample", `Hello, world`)
```
{% endtab %}
{% tab title="web3.js" %}
**web3.js**
```javascript
ens.setText('iam.alice.eth', 'Test', 'Test record', {from: ...});
```
{% endtab %}
{% endtabs %}
## 配置反向解析
Expand All @@ -163,19 +138,15 @@ ens.setText('iam.alice.eth', 'Test', 'Test record', {from: ...});
配置反向解析通常是通过诸如[ENS管理器](https://manager.ens.domains/)这样的用户界面来实现的。go-ens和web3.py也可以提供这项功能:
{% tabs %}
{% tab title="go-ens" %}
**go-ens**
```go
reverseRegistrar, err := ens.NewReverseRegistrar(client)
// opts are go-ethereum's bind.TransactOpts
err := reverseRegistrar.SetName(opts, "iam.alice.eth")
```
{% endtab %}
{% tab title="web3.py" %}
**web3.py**
```python
ns.setup_name('iam.alice.eth', '0x1234...')
```
{% endtab %}
{% endtabs %}
Loading

0 comments on commit fe7ae91

Please sign in to comment.