Skip to content

Commit c6095b5

Browse files
committed
Merge branch 'dev' into build/next-14-netlify-workaround
2 parents fc16392 + 0f274ef commit c6095b5

File tree

11 files changed

+256
-144
lines changed

11 files changed

+256
-144
lines changed

.github/workflows/lighthouse-ci.yml

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
name: Lighthouse CI
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- staging
8+
- performance/**
9+
10+
jobs:
11+
lighthouse:
12+
runs-on: ubuntu-latest
13+
14+
permissions:
15+
pull-requests: write
16+
17+
steps:
18+
- uses: actions/checkout@v4
19+
- name: Sleep for 60 minutes
20+
run: sleep 3600
21+
- name: Wait for Netlify Deploy
22+
id: netlify_deploy
23+
uses: probablyup/[email protected]
24+
with:
25+
site_id: "e8f2e766-888b-4954-8500-1b647d84db99"
26+
max_timeout: 900
27+
env:
28+
NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }}
29+
- name: Audit URLs using Lighthouse
30+
id: lighthouse_audit
31+
uses: treosh/lighthouse-ci-action@v11
32+
with:
33+
urls: |
34+
${{ steps.netlify_deploy.outputs.url }}/en/
35+
${{ steps.netlify_deploy.outputs.url }}/en/wallets/find-wallet/
36+
${{ steps.netlify_deploy.outputs.url }}/en/staking/
37+
${{ steps.netlify_deploy.outputs.url }}/en/whitepaper/
38+
${{ steps.netlify_deploy.outputs.url }}/en/nft/
39+
${{ steps.netlify_deploy.outputs.url }}/en/developers/docs/intro-to-ethereum/
40+
${{ steps.netlify_deploy.outputs.url }}/en/developers/tutorials/creating-a-wagmi-ui-for-your-contract/
41+
runs: 3 # run three times
42+
uploadArtifacts: true # save results as an action artifacts
43+
temporaryPublicStorage: true # upload lighthouse report to the temporary storage
44+
- name: Format lighthouse score
45+
id: format_lighthouse_score
46+
uses: actions/github-script@v3
47+
with:
48+
github-token: ${{ secrets.GITHUB_TOKEN }}
49+
script: |
50+
const manifests = ${{ steps.lighthouse_audit.outputs.manifest }};
51+
const links = ${{ steps.lighthouse_audit.outputs.links }};
52+
const formatResult = (res) => Math.round((res * 100));
53+
54+
console.log('Total manifests:', manifests.length);
55+
console.log('Manifests:', JSON.stringify(manifests, null, 2));
56+
console.log('Links:', JSON.stringify(links, null, 2));
57+
58+
let comment = [
59+
'| Page | Performance | Accessibility | Best practices | SEO | PWA |',
60+
'| --- | --- | --- | --- | --- | --- |',
61+
];
62+
63+
Object.entries(links).forEach(([pageUrl, reportUrl]) => {
64+
const relevantManifests = manifests.filter(manifest => manifest.url === pageUrl);
65+
const results = relevantManifests.map(manifest => manifest.summary);
66+
const averagedResults = {};
67+
68+
if (results.length > 0) {
69+
Object.keys(results[0]).forEach(key => {
70+
averagedResults[key] = formatResult(
71+
results.reduce((acc, cur) => acc + cur[key], 0) / results.length
72+
);
73+
});
74+
75+
const score = res => res >= 90 ? '🟢' : res >= 50 ? '🟠' : '🔴';
76+
const urlForTable = pageUrl.includes('/en/') ? pageUrl.substring(pageUrl.indexOf('/en/')) : pageUrl;
77+
78+
comment.push(
79+
`| [${urlForTable}](${reportUrl}) | ${score(averagedResults.performance)} ${averagedResults.performance} | ${score(averagedResults.accessibility)} ${averagedResults.accessibility} | ${score(averagedResults['best-practices'])} ${averagedResults['best-practices']} | ${score(averagedResults.seo)} ${averagedResults.seo} | ${score(averagedResults.pwa)} ${averagedResults.pwa} |`
80+
);
81+
} else {
82+
console.error('No results found for URL:', pageUrl);
83+
}
84+
});
85+
86+
comment.push(
87+
' ',
88+
'*Lighthouse scores are calculated based on the latest audit results*'
89+
);
90+
91+
comment = comment.join('\n');
92+
core.setOutput("comment", comment);
93+
- name: Find current PR # Find the PR associated with this push, if there is one.
94+
uses: jwalton/[email protected]
95+
id: findPr
96+
with:
97+
state: open
98+
- name: Add Lighthouse stats as comment
99+
id: comment_to_pr
100+
uses: marocchino/[email protected]
101+
with:
102+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
103+
number: ${{ steps.findPr.outputs.number }}
104+
header: lighthouse
105+
message: ${{ steps.format_lighthouse_score.outputs.comment }}

public/content/translations/zh-tw/nft/index.md

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,28 @@ summaryPoint3: 由建置於以太坊區塊鏈上的智慧型合約提供支援
1414

1515
## 什麼是非同質化代幣? {#what-are-nfts}
1616

17-
每個非同質化代幣都是獨一無二的代幣。 每個非同質化代幣都有不同的屬性(非同質性),它們的稀缺性是可以驗證的。 這與以太幣和其他基於以太坊的代幣(例如 USDC)不同,後者的每一個代幣都一樣且具有相同的特性(「同質化」)。 你不會在乎你錢包內的其中一張鈔票(以太幣),因為它們都一樣且價值相同。 但你_確實會_在意你自己持有的特定非同質化代幣,因為它們不同於其他的資產,全都有各自的屬性(非同質化)。
17+
非同質化代幣是一種**獨一無二**的代幣。<0> 每個非同質化代幣都有不同的屬性(非同質性),它們的稀缺性是可以驗證的。 非同質化代幣與[以太幣](/glossary/#ether)和其他基於以太坊的代幣(例如 USDC)不同,後者的每一個代幣都一樣的,具有相同的特性(「同質化」)。 你不會在乎你錢包內的其中一張鈔票(以太幣),因為它們都一樣且價值相同。 但你_確實會_在意你自己持有的特定非同質化代幣,因為它們不同於其他的資產,全都有各自的屬性(非同質化)。
1818

19-
每個非同質化代幣的獨特性使藝術品、收藏品,甚至房地產等等事物能夠代幣化,即一個特定的唯一非同質化代幣對應到現實世界的一些特定且獨一無二的物品或數位物品。 資產的所有權可以在以太坊區塊鏈上公開驗證
19+
每個非同質化代幣的獨特性使藝術品、收藏品,甚至房地產等等事物能夠代幣化,即一個特定的唯一非同質化代幣對應到現實世界的一些特定且獨一無二的物品或數位物品。 資產的所有權在以太坊[區塊鏈](/glossary/#blockchain)上被公開驗證
2020

2121
<YouTube id="Xdkkux6OxfM" />
2222

2323
## 資產網路 {#internet-of-assets}
2424

25-
非同質化代幣和以太坊解決了網際網路上現存的某些問題。 隨著一切變得越來越數位化,有需求以不受中心組織控制的方式來複製實體物品的屬性,例如稀缺性、唯一性和所有權證明。 舉例來說,透過非同質化代幣,你可以在所有基於以太坊的應用程式上擁有某個音樂 mp3 檔 的所有權,不必綁定於單一公司特定的音樂 App 上,如 Spotify 或 Apple Music。 你可以擁有可販售或兌換的社交媒體帳號,且無法被平臺提供者任意奪走
25+
非同質化代幣和以太坊解決了網際網路上現存的某些問題。 隨著一切變得越來越數位化,有需求以不受中心組織控制的方式來複製實體物品的屬性,例如稀缺性、唯一性和所有權證明。 舉例來說,透過非同質化代幣,你可以在所有基於以太坊的應用程式上擁有某個音樂 mp3 檔 的所有權,不必綁定於單一公司特定的音樂 App 上,如 Spotify 或 Apple Music。 你可以擁有可出售或交換的社交媒體帳號,且該帳號**無法被平臺提供者任意奪走**
2626

2727
相較於我們大多數人今天使用的網際網路,非同質化代幣網際網路的特色如下...
2828

2929
### 比較 {#nft-comparison}
3030

31-
| 非同質化代幣網際網路 | 目前的網際網路 |
32-
| ---------------------------------------------------- | ---------------------------------------------------------- |
33-
| 你擁有自己的數位資產! 只有你可以販售或交換這些資產| 你從某些機構租借資產後,資產隨時可能被奪走。 |
34-
| 非同質化代幣具有數位獨特性,每個非同質化代幣皆獨一無二。 | 正品和實體複本往往無法區分。 |
35-
| 非同質化代幣的所有權儲存在區塊鏈上供任何人驗證| 數位物品的所有權紀錄儲存在由機構控制的伺服器上–由他們說了算。 |
36-
| 非同質化代幣都是以太坊上的智慧型合約。 這表示以太坊上的其他智慧型合約及應用程式中都能輕易使用這些代幣| 擁有數位物品的公司通常需要自己的「防火牆防禦地區」(指電信業者或服務供應商擁有控制應用、內容與媒體的能力)基礎架構 |
37-
| 內容創作者可以在任何地點出售自己的作品,還能進入全球市場| 創作者依賴其使用的平台所提供的基礎架構和發佈通路。 這些通常會受到使用條款和地理限制的約束。 |
38-
| 非同質化代幣創作者可以保留自身作品的所有權,並將版稅計費直接編程進非同質化代幣的合約| 音樂串流服務等平台分到大部分的銷售利潤。 |
31+
| 非同質化代幣網際網路 | 目前的網際網路 |
32+
| --------------------------------------------------------------------------------- | -------------------------------------------------- |
33+
| **你擁有自己的資產!**只有你才可以出售或交換這些資產 | **你向某些組織借用資產時**,這些資產可能被奪走。 |
34+
| 非同質化代幣具有**數位獨特性**,每個非同質化代幣皆獨一無二。 | **往往無法區分複製品和正品** |
35+
| 非同質化代幣的所有權儲存在區塊鏈上,任何人都可**公開驗證**該所有權 | 數位物品的所有權紀錄儲存在**由機構控制**的伺服器上,必須在機構同意後才能獲取所有權紀錄。 |
36+
| 非同質化代幣是以太坊上的[智能合約](/glossary/#smart-contract)。 這表示它們**可以直接在以太坊上的其他智能合約**和應用程式上使用| 擁有數位物品的公司通常**需要自己的「封閉平台 (walled garden)」基礎架構** |
37+
| 內容**創作者可以在任何地點出售自己的作品**,還能打入全球市場 | 創作者依賴其使用的平台所提供的基礎架構和發佈通路。 這些通常會受到使用條款和**地理限制**的約束。 |
38+
| 非同質化代幣創作者**可保有對自己作品的所有權**,並將版稅直接寫入非同質化代幣的智能合約 | **音樂串流服務等平台分到大部分的銷售利潤** |
3939

4040
## 非同質化代幣有哪些用途? {#nft-use-cases}
4141

@@ -50,13 +50,20 @@ summaryPoint3: 由建置於以太坊區塊鏈上的智慧型合約提供支援
5050
- 限制內容存取
5151
- 票務
5252
- 去中心化的網際網路網域名稱
53-
- 去中心化金融中的抵押品
53+
- [去中心化金融](/glossary/#defi)的抵押品
5454

55-
或許你是位藝術家,想透過非同質化代幣分享你的作品,同時不失去對藝術品的控制權,並且不會因中介而損失收益。 你可以建立一份新合約,並明訂非同質化代幣的數量、屬性,以及連到某些特定藝術品的連結。 作為藝術家,你可以將你應得的版稅編程進智慧型合約 (如:每當非同質化代幣被轉移時,將銷售價格的 5% 撥給合約持有者)。 由於你擁有部署該合約的錢包,你隨時也都能證明是你建立了那些非同質化代幣。 你的買家可輕易證明他們擁有賣家收藏品的正版非同質化代幣,因為他們的錢包地址與賣家智慧型合約中的代幣相關聯。 他們可以在以太坊生態系統中使用非同質化代幣,並可信任代幣的真實性。
55+
或許你是位藝術家,想透過非同質化代幣分享你的作品,同時不失去對藝術品的控制權,並且不會因中介而損失收益。 你可以建立一份新合約,並明訂非同質化代幣的數量、屬性,以及連到某些特定藝術品的連結。 作為藝術家,**你可以將您應得的版稅寫入智能合約**(如:每當非同質化代幣被轉移時,支付銷售價格的 5% 給合約擁有者)。 你可以隨時證明該非同質化代幣由您建立,因為您擁有部署該合約的[錢包](/glossary/#wallet)。 你的買家可輕易證明他們擁有賣家收藏品的**正版非同質化代幣**,因為他們的錢包[地址](/glossary/#address)與賣家智能合約中的代幣相關聯。 他們可以在以太坊生態系統中使用非同質化代幣,並可信任代幣的真實性。
5656

57-
又或者以體育賽事的門票為例, 如同賽事主辦者可以決定要販售幾張門票,非同質化代幣的創作者也可以決定要發行幾份複製品。 有時可能是完全相同的複製品,例如 5000 張普通門票; 有時可能會製作好幾種極為類似,但各自略有不同的複製品,例如指定席的票券。 此類票券可以在不需要給票務員付款的情況下進行點對點買賣,買家可以隨時檢查合約地址,以確保票券的真實性。
57+
<InfoBanner shouldSpaceBetween emoji=":eyes:" mt="8">
58+
<div>探索、購買或建立你個人的非同質化代幣藝術品/收藏品……</div>
59+
<ButtonLink to="/dapps/?category=collectibles#explore">
60+
探索非同質化代幣藝術品
61+
</ButtonLink>
62+
</InfoBanner>
5863

59-
在 ethereum.org 上,非同質化代幣被用來證明大家對我們的 Github 儲存庫做出了有意義的貢獻(對網站進行編程、撰寫或修改文章等等)、翻譯我們的文字内容,或參加了我們的社群電話會議,以及我們甚至擁有專屬的非同質化代幣域名。 如果你對 ethereum.org 有所貢獻,就可以領取出席證明協定 (POAP) 的非同質化代幣。 某些加密貨幣聚會使用 POAP 作為入場門票。 [深入了解如何貢獻](/contributing/#poap)
64+
又或者以體育賽事的門票為例, 如同**賽事主辦者可以決定要販售幾張門票**,非同質化代幣的創作者也可以決定要發行幾份複製品。 有時可能是完全相同的複製品,例如 5000 張普通門票; 有時可能會製作好幾種極為類似,但各自略有不同的複製品,例如指定席的票券。 此類票券可以在不需要給票務員付款的情況下進行點對點買賣,買家可以隨時檢查合約地址,以確保票券的真實性。
65+
66+
在 ethereum.org 上,**非同質化代幣被用來證明大家對我們的 Github 儲存庫做出了有意義的貢獻**(對網站進行編程、撰寫或修改文章等等)、翻譯我們的文字内容,或參加了我們的社群電話會議,以及我們甚至擁有專屬的非同質化代幣域名。 如果你對 ethereum.org 有貢獻,你可以領取[出席證明協定 (POAP)](/glossary/#poap) 非同質化代幣。 某些加密貨幣聚會使用 POAP 作為入場門票。 [深入了解如何貢獻](/contributing/#poap)
6067

6168
![ethereum.org POAP](./poap.png)
6269

@@ -68,7 +75,7 @@ summaryPoint3: 由建置於以太坊區塊鏈上的智慧型合約提供支援
6875

6976
## 非同質化代幣如何運作? {#how-nfts-work}
7077

71-
與以太坊區塊鏈上的任何數位物品一樣,非同質化代幣是透過一種稱爲「智慧型合約」的基於以太坊的特殊電腦程式所建立。 這些合約遵循諸如 ERC-721 或 ERC-1155 的特定規則,這些標準將決定該合約的用途
78+
與以太坊區塊鏈上的任何數位物品一樣,非同質化代幣是透過一種稱爲「智慧型合約」的基於以太坊的特殊電腦程式所建立。 這些合約會遵循特定的規則,如 [ERC-721](/glossary/#erc-721)[ERC-1155](/glossary/#erc-1155) 標準,這些規則決定了合約的用途
7279

7380
非同質化代幣智慧型合約的一些關鍵用途:
7481

@@ -82,7 +89,7 @@ summaryPoint3: 由建置於以太坊區塊鏈上的智慧型合約提供支援
8289

8390
### 非同質化代幣的安全性 {#nft-security}
8491

85-
以太坊的安全性來自權益證明。 以太坊從經濟性的角度抑制惡意行為,這讓以太坊得以防竄改。 這也讓非同質化代幣得以成真。 一旦包含你的非同質化代幣交易的區塊最終化,攻擊者要改變它,就得花費數百萬以太幣。 任何運行以太坊軟體的人皆能立即偵測到對非同質化代幣進行的欺詐性篡改,且惡意行為者也會遭到經濟處罰及驅逐。
92+
以太坊的安全性來自[權益證明](/glossary/#pos)。 以太坊從經濟性的角度抑制惡意行為,這讓以太坊得以防竄改。 這也讓非同質化代幣得以成真。 一旦包含你的非同質化代幣交易的[區塊](/glossary/#block)[最終化](/glossary/#finality),攻擊者要對其作出變更,就得花費數百萬以太幣。 任何運行以太坊軟體的人皆能立即偵測到對非同質化代幣進行的欺詐性篡改,且惡意行為者也會遭到經濟處罰及驅逐。
8693

8794
與非同質化代幣有關的安全問題最常與釣魚詐騙、智慧型合約漏洞或使用者錯誤(如無意間洩漏私密金鑰)有關,所以良好的錢包安全性對非同質化代幣持有者十分重要。
8895

0 commit comments

Comments
 (0)