From 32ce8665cf3fd651803647f2f0c37b192fbe5d5e Mon Sep 17 00:00:00 2001 From: hahadaxia Date: Tue, 21 May 2024 21:38:13 +0800 Subject: [PATCH] update --- .idea/solana-basic-ui.iml | 1 - docs/.vitepress/config.ts | 108 ++++++++++------- docs/Introduction/.DS_Store | Bin 0 -> 6148 bytes docs/Introduction/CoreConcepts.md | 155 ++++++++++++++++++++++++ docs/Introduction/IntrotoDevelopment.md | 90 -------------- docs/Introduction/Rent.md | 18 ++- docs/Introduction/Wallets.md | 12 +- docs/Introduction/index.md | 25 ---- package-lock.json | 23 ++-- package.json | 2 +- 10 files changed, 250 insertions(+), 184 deletions(-) create mode 100644 docs/Introduction/.DS_Store delete mode 100644 docs/Introduction/IntrotoDevelopment.md delete mode 100644 docs/Introduction/index.md diff --git a/.idea/solana-basic-ui.iml b/.idea/solana-basic-ui.iml index d0876a7..43f86f1 100644 --- a/.idea/solana-basic-ui.iml +++ b/.idea/solana-basic-ui.iml @@ -2,7 +2,6 @@ - \ No newline at end of file diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index fc2dcdb..61920db 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -1,5 +1,60 @@ -import { defineConfig } from "vitepress"; +import { defineConfig, type DefaultTheme } from "vitepress"; +function nav(): DefaultTheme.NavItem[] { + return [ + { + text: "Solana介绍", + link: "/Introduction/overview", + activeMatch: "/Introduction/", + }, + { + text: "CLI命令行工具", + link: "/CLI/connecting-to-a-cluster", + activeMatch: "/CLI/", + }, + ]; +} + +function sidebarIntroduction(): DefaultTheme.SidebarItem[] { + return [ + { + text: "Solana介绍", + collapsed: false, + items: [ + { text: "概述", link: "/overview" }, + { text: "租金经济", link: "/rent" }, + { text: "钱包指南", link: "/wallets" }, + { text: "开发入门", link: "/dev" }, + ], + }, + ]; +} + +function sidebarCLI(): DefaultTheme.SidebarItem[] { + return [ + { + text: "CLI命令行工具", + collapsed: false, + items: [ + { + text: "connecting to a cluster", + link: "/connecting-to-a-cluster", + }, + { text: "staking", link: "/staking" }, + { text: "使用 CLI 部署 Solana 程序", link: "/deploy-a-program" }, + { text: "Solana CLI 中的持久交易nonce", link: "/durable-nonce" }, + { + text: "使用 Solana CLI 进行离线交易签名", + link: "/offline-signing", + }, + { + text: "使用 Solana CLI 进行链下消息签名", + link: "/sign-offchain-message", + }, + ], + }, + ]; +} // refer https://vitepress.dev/reference/site-config for details export default defineConfig({ lang: "zh-CN", @@ -7,49 +62,14 @@ export default defineConfig({ description: "由崔棉大师@MasterCui为您带来的Solana开发入门教学.", themeConfig: { - nav: [ - { text: "开始", link: "/start" }, - // { - // text: "Dropdown Menu", - // items: [ - // { text: "Item A", link: "/item-1" }, - // { text: "Item B", link: "/item-2" }, - // { text: "Item C", link: "/item-3" }, - // ], - // }, - - // ... - ], + nav: nav(), - sidebar: [ - { - items: [ - { text: "开始", link: "/start" }, - { - text: "安装命令行工具", - items: [ - { text: "Solana客户端", link: "/CLI/solana" }, - { text: "spl-token客户端", link: "/CLI/spl" }, - ], - }, - { - text: "CLI命令行", - items: [ - { text: "创建Token", link: "/CLI/create-token" }, - ], - }, - { - text: "账户相关", - items: [ - { text: "创建账户", link: "/Account/Keypair" }, - { text: "幸运账号", link: "/Account/LuckyAccount" }, - { text: "支付账户", link: "/Account/Payer" }, - ], - }, - // ... - ], - // text: "Solana开发入门", + sidebar: { + "/Introduction/": { + base: "/Introduction/", + items: sidebarIntroduction(), }, - ], + "/CLI/": { base: "/CLI/", items: sidebarCLI() }, + }, }, -}); +}); \ No newline at end of file diff --git a/docs/Introduction/.DS_Store b/docs/Introduction/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..52aaad1e3cbb8b05a8fb69a7b31d52f2f06a504d GIT binary patch literal 6148 zcmeHKK~BRk5S$HF3G_gZT#)>NO8g*{a^TDdpiPA;g$9*UIOfh{cpoR2wXKRK=2`*T zt#-$DW}SK*#aRF{elE{}A%L8&m>n@BOs}hVEQ=$3qWC#3QDcc2=6LL|ZQwU5pnG=$ z-M1BY?fd?%@q`f`P+nK{Y+BV*GWnRu2XXZ2%`d2rl9`(n7w;`@js>3&<-aER7cKsP z|7%0`ig7`FNo8gCt*k@8mL=9Hww$%t$DH*J6@PPPq}Tk`%3;^c6fgx$fj_JO&uq1P z5YVD2U<#N5TLtv};OL4)#3rDBbujo6fY{@(H@3Bw&>R=Bh}Z<=6`F)pVn~%(Vn|5m zxQo0ZViPc=Lt^nE@y-$}6!CZG{La%MML>(DfGM!6z(ME^_58p3x&GfxvYshm3j8Yt zq&K;ljJc$Ewssb$XRV{(($$pL1l*>u;g4c+^(a22d*is%2C<0P1mp``` - -这将创建一个包含所有必要文件和基本配置的新项目,以开始在 Solana 上构建。脚手架将包括一个示例前端和一个链上程序模板(如果您选择了其中一个)。您可以阅读[create-solana-dapp](https://github.com/solana-developers/create-solana-dapp?tab=readme-ov-file#create-solana-dapp) 文档以了解更多信息。 - -### 链上程序开发 -链上程序开发包括用Rust、C或C++编写程序。首先,您需要确保机器上安装了 Rust。您可以使用以下命令执行此操作: - -```curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh``` - -然后,您需要安装Solana CLI来编译和部署您的程序。您可以通过运行以下命令来安装 Solana CLI: - -```sh -c "$(curl -sSfL https://release.solana.com/stable/install)" ``` - -建议使用Solana CLI运行本地验证器来测试您的程序。要在安装Solana CLI后,运行本地验证器,请运行以下命令: - -```solana-test-validator``` - -这将在您的计算机上启动一个本地验证程序,您可以使用它来测试您的程序。您可以在本指南中阅读[有关本地开发的更多信息](https://solana.com/developers/guides/getstarted/setup-local-development)。 - -在构建链上程序时,您可以选择使用原生 Rust(即没有框架)构建或使用 Anchor 框架。Anchor 是一个框架,通过为开发人员提供更高级别的API,可以更轻松地在Solana上构建。把Anchor想象成用React构建你的网站,而不是原始的Javascript和HTML。虽然Javascript和HTML可以让您更好地控制您的网站,但 React 可以加速您的开发并使开发变得容易。您可以在他们的网站上阅读有关[Anchor](https://www.anchor-lang.com/)的更多信息。 - -你需要一种方法来测试你的程序。根据您的语言偏好,有几种不同的方法可以测试您的程序: -- solana-program-test - 内置于Rust中的测试框架 -- solana-bankrun - 为编写 Typescript 测试而构建的测试框架 -- bankrun - 为编写 Python 测试而构建的测试框架 -如果您不想在本地开发程序,还可以使用在线 IDE Solana Playground。Solana Playground 允许您在 Solana 上编写、测试和部署程序。您可以按照我们的指南开始使用 Solana Playground。 - -## 开发人员环境 -根据您的工作选择合适的环境非常重要。在Solana,有几种不同的网络环境(称为集群)来促进成熟的测试和 CI/CD 实践: - -- 主网Beta版:所有操作发生的生产网络。这里的交易需要真金白银。 -- 开发网络:质量保证网络是您在部署到生产环境之前部署要测试的程序。想想“暂存环境”。 -- 本地环境:在计算机上运行 `solana-test-validator` 的用于测试程序的本地网络。这应该是您在开发程序时的首选。 - -# 范例构建 -当您开始在Solana上构建时,还有一些资源可以帮助您加快旅程: - -- [Solana Cookbook](https://solana.com/developers/cookbook):参考和代码片段的集合,可帮助您在 Solana 上构建。 -- [Solana程序示例](https://github.com/solana-developers/program-examples):示例程序的存储库,为程序上的不同操作提供构建块。 -- [指南](https://solana.com/developers/guides):教程和指南,引导您完成在Solana上的构建。 - -# 获取支持 -你能找到的最好的支持是在[Solana StackExchange](https://solana.stackexchange.com/)上。首先在那里搜索您的问题-很有可能已经有其他人提出问题并有答案。如果不存在,请添加一个新问题!请记住在您的问题中包含尽可能多的详细信息,请使用文本(而不是屏幕截图)来显示错误消息,以便其他有相同问题的人可以找到您的问题! - -# 后续步骤 -您现在已准备好开始在 Solana 上构建了! - -[在浏览器中部署您的第一个Solana程序](https://solana.com/developers/guides/getstarted/hello-world-in-your-browser) -[设置本地开发环境](https://solana.com/developers/guides/getstarted/setup-local-development) -[开始使用 Rust 在本地构建程序](https://solana.com/developers/guides/getstarted/local-rust-hello-world) -[编写Solana程序概述](https://solana.com/docs/programs) diff --git a/docs/Introduction/Rent.md b/docs/Introduction/Rent.md index b28d5c6..6032d3d 100644 --- a/docs/Introduction/Rent.md +++ b/docs/Introduction/Rent.md @@ -1,10 +1,16 @@ # 存储租金经济 -提交给Solana账本的每笔交易都会产生费用。交易费用由交易发起者支付,并由验证者来收取,理论上费用包含紧急的、交易的验证成本以及将该数据记录到账本。 +提交给Solana账本的每笔交易都会产生费用。交易费用由交易发起者支付,并由验证者来收取,理论上费用包含紧急程度、交易的验证成本以及将该数据记录到账本。 在此过程中没有考虑的是活动账本状态的中期存储,它必须由轮换验证器集维护。随着活动状态的增长,这种类型的存储不仅会给验证器带来费用,还会给更广泛的网络带来费用,数据传输和验证开销也会增加。为了考虑到这些费用,我们在此描述我们对存储租金的初步设计和实施。 + 存储租金可以通过以下两种方式之一来支付: -方法1:设置后不管 -通过这种方法,拥有两年租金押金的账户可以免收网络租金费用。通过保持这种最低余额,更广泛的网络将从减少的流动性中受益,账户持有人可以放心,他们将 Account::data 被保留以继续访问/使用。 -方法2:按字节付费 + +方法一:设置后不管 + +通过这种方法,拥有两年租金押金的账户可以免收网络租金费用。通过保持这种最低余额,更广泛的网络将从减少的流动性中受益,账户持有人可以放心,他们将 `Account::data` 被保留以继续访问/使用。 + +方法二:按字节付费 + 如果一个账户的存入租金少于两年,则网络将按每个周期收取租金,以记入下一个周期的信用额度。这笔租金是按照规定的比率扣除的,单位是每千字节年。 -有关此设计的技术实现详细信息的信息,请参阅[“租用”](https://docs.solanalabs.com/implemented-proposals/rent)部分。 -注意:新创建的账户必须预充值足够数量的 lamports,以达到租金豁免标准。Lamports是SOL的最小单位,本次更新规定所有新账户创建时都需要预存一定量的lamports,使其满足租金豁免条件。这样可以避免小额账户长期占用网络资源却无需支付租金的情况。任何交易,如果会导致账户余额低于租金豁免最低值(且该余额并非零),都将失败。现有账户的租金支付规则保持不变,但任何会使账户余额低于租金豁免最低值的交易都将被拒绝。简而言之,此更新基本实现了所有账户的租金豁免。之前创建的需要支付租金的账户,会继续按照原有规则支付租金,直到满足以下两个条件之一:(1)账户余额归零。(2)交易使账户余额增加,达到租金豁免标准。 \ No newline at end of file +有关此设计的技术实现详细信息的信息,请参阅[租用部分](https://docs.solanalabs.com/implemented-proposals/rent)。 + +**注意**:新创建的账户必须预充值足够数量的 lamports,以达到租金豁免标准。Lamports是SOL的最小单位,本次更新规定所有新账户创建时都需要预存一定量的lamports,使其满足租金豁免条件。这样可以避免小额账户长期占用网络资源却无需支付租金的情况。任何交易,如果会导致账户余额低于租金豁免最低值(且该余额并非零),都将失败。现有账户的租金支付规则保持不变,但任何会使账户余额低于租金豁免最低值的交易都将被拒绝。简而言之,此更新基本实现了所有账户的租金豁免。之前创建的需要支付租金的账户,会继续按照原有规则支付租金,直到满足以下两个条件之一:(1)账户余额归零。(2)交易使账户余额增加,达到租金豁免标准。 \ No newline at end of file diff --git a/docs/Introduction/Wallets.md b/docs/Introduction/Wallets.md index 530cd26..2d39176 100644 --- a/docs/Introduction/Wallets.md +++ b/docs/Introduction/Wallets.md @@ -1,22 +1,22 @@ # Solana钱包指南 本文档描述了Solana用户可以使用的不同钱包选项,这些用户希望能够在Solana区块链上发送、接收SOL代币并与之交互。 -## 什么是钱包?# +## 什么是钱包? 加密货币钱包是一种用于存储密钥集合的设备或应用程序,可用来发送、接收和跟踪加密货币的所有权。 钱包可以有多种形式。它可以是您计算机文件系统中的目录或文件、一张纸或称为硬件钱包的专用设备。还有各种智能手机应用程序和计算机程序,可以提供用户友好的方式来创建和管理钱包。 -## 密钥对 +### 密钥对 密钥对是安全生成的密钥及其加密派生的公钥。密钥及其对应的公钥统称为密钥对。钱包包含一个或多个密钥对的集合,并提供一些与它们交互的方法。 -## 公钥 +### 公钥 公钥(通常缩写为pubkey)被称为钱包的接收地址或简称为它的地址。钱包地址可以自由共享和显示。当另一方要向钱包发送一定数量的加密货币时,他们需要知道钱包的接收地址。根据区块链的实现,该地址还可用于查看有关钱包的某些信息,例如查看余额,但无法更改有关钱包的任何内容或提取任何代币。 -## 密钥 +### 密钥 密钥(也称为私钥)用于对任何交易进行数字签名,以将加密货币发送到另一个地址或对钱包进行任何更改。绝不能共享密钥。如果有人获得了钱包的密钥,他们可以提取钱包包含的所有代币。如果钱包的密钥丢失,则发送到该钱包地址的任何令牌都将永久丢失。 -# 安全 +## 安全 不同的钱包解决方案提供不同的密钥对安全方法,与密钥对交互,并签署交易以使用/花费代币。有些钱包比其他的更容易使用。有些可以更安全地存储和备份密钥。Solana支持多种类型的钱包,因此您可以在安全性和便利性之间选择适当的平衡。 如果您希望能够在Solana区块链上接收SOL代币,您首先需要创建一个钱包。 -# 支持的钱包 +## 支持的钱包 一些基于浏览器和移动应用程序的钱包支持Solana。在[Solana生态系统](https://solana.com/ecosystem/explore?categories=wallet)页面上找到一些可能适合您的选项。 对于高级用户或开发人员来说,[命令行钱包](https://docs.solanalabs.com/cli/wallets)可能更合适,因为在集成到第三方解决方案之前,Solana 区块链上的新功能将始终首先在命令行上得到支持。 diff --git a/docs/Introduction/index.md b/docs/Introduction/index.md deleted file mode 100644 index 5a5e35e..0000000 --- a/docs/Introduction/index.md +++ /dev/null @@ -1,25 +0,0 @@ -# 介绍 -## 什么是 Solana? -Solana是一个为大规模应用而构建的区块链。它是一个高性能网络,可用于一系列应用,包括金融、支付和游戏。Solana运行在一个独立的全球状态机,并且是开放的、可互操作的和去中心化的。 - -## 为什么选择 Solana? -Solana专为扩展而设计,专为区块链应用程序构建,以覆盖数百万级用户。开发人员无需担心针对区块链层进行优化,而是可以专注于构建他们的应用程序以达到产品市场契合度。它现在不仅可以根据区块链应用需求进行扩展,而且网络将持续优化,并兼顾用户体验。 - -在应用程序中构建最佳用户体验是开发人员的首要任务。使用区块链,用户体验通常受到底层技术的限制,导致响应时间慢和高费用。Solana的低费用和400毫秒的确认时间使开发人员能够构建用户友好且每个人都可以访问的应用程序。 - -## Solana 功能 -| 特性 | 描述 | -|-----------|---------------------------------------------------------------------------------| -| 链上程序开发 | 在链上开发和部署程序的能力。用户可以在未经许可的情况下与链上程序进行交互,从而消除需要中间服务器来构建应用程序。 | -| 400ms间隙时间 | 用户在Solana上发送的每笔交易都在一个区块中得到确认。每个区块的目标间隙时间为400 毫秒,用户无需等待即可进行交互,从而提供任何区块链中最佳的用户体验。 | -| 费用低 | Solana每笔交易的中位数费用为0.00064 SOL,无论背景如何,都能为世界各地的用户进行构建。 | -| 高吞吐量 | Solana可扩展到每秒数千笔交易,且可按应用的用户需求进行扩展。 | - -## 如何使用这些文档 -在左侧,您会找到文档侧边栏。这将按从基础信息到高级信息的顺序列出文档。如果你是Solana的新手,我们建议你从顶部开始,然后一路向下。但是,欢迎您按照您喜欢的任何顺序阅读它们。 - -准备好开始构建后,请查看[入门部分](https://github.com/Fankouzu/solana-basic-ui/blob/main/docs/intro/dev)和构建您的第一个[Solana应用程序的指南](https://solana.com/developers/guides/getstarted/local-rust-hello-world)。 - -## 需要帮助吗? -在[Solana StackExchange](https://solana.stackexchange.com/)上从Solana社区获得帮助。 - diff --git a/package-lock.json b/package-lock.json index 207f141..3aa28c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "": { "devDependencies": { "surge": "^0.23.1", - "vitepress": "latest" + "vitepress": "^1.2.2" } }, "node_modules/@algolia/autocomplete-core": { @@ -2689,26 +2689,27 @@ } }, "node_modules/vitepress": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.1.4.tgz", - "integrity": "sha512-bWIzFZXpPB6NIDBuWnS20aMADH+FcFKDfQNYFvbOWij03PR29eImTceQHIzCKordjXYBhM/TjE5VKFTUJ3EheA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.2.2.tgz", + "integrity": "sha512-uZ3nXR5NY4nYj3RJWCo5jev9qlNZAQo5SUXu1U0QSUx84cUm/o7hCTDVjZ4njVSVui+PsV1oAbdQOg8ygbaf4w==", "dev": true, "dependencies": { "@docsearch/css": "^3.6.0", "@docsearch/js": "^3.6.0", - "@shikijs/core": "^1.3.0", - "@shikijs/transformers": "^1.3.0", - "@types/markdown-it": "^14.0.1", + "@shikijs/core": "^1.5.2", + "@shikijs/transformers": "^1.5.2", + "@types/markdown-it": "^14.1.1", "@vitejs/plugin-vue": "^5.0.4", - "@vue/devtools-api": "^7.0.27", + "@vue/devtools-api": "^7.2.0", + "@vue/shared": "^3.4.27", "@vueuse/core": "^10.9.0", "@vueuse/integrations": "^10.9.0", "focus-trap": "^7.5.4", "mark.js": "8.11.1", "minisearch": "^6.3.0", - "shiki": "^1.3.0", - "vite": "^5.2.10", - "vue": "^3.4.25" + "shiki": "^1.5.2", + "vite": "^5.2.11", + "vue": "^3.4.27" }, "bin": { "vitepress": "bin/vitepress.js" diff --git a/package.json b/package.json index 8bd6931..9fea2b9 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,6 @@ }, "devDependencies": { "surge": "^0.23.1", - "vitepress": "latest" + "vitepress": "^1.2.2" } }