diff --git a/BTC/Advanced/Lighting Network/README.md b/BTC/Advanced/Lighting Network/README.md new file mode 100644 index 000000000..01af411ce --- /dev/null +++ b/BTC/Advanced/Lighting Network/README.md @@ -0,0 +1,40 @@ +**闪电网络**(Lightning Network)是一种比特币的第二层支付协议,旨在通过减少链上交易数量,实现快速、低成本的交易。这一网络在比特币区块链之上构建,旨在解决比特币当前的扩展性和交易速度问题。以下是对闪电网络的核心概念及其功能的详细介绍: + +### 1. **核心概念:支付通道** + +闪电网络的基本运行机制是通过支付通道。具体操作如下: + - **创建支付通道**:两方需要频繁交易时,可以通过创建支付通道来进行。这需要双方向一个多签名钱包存入初始资金,并记录在区块链上作为一次链上交易。 + - **链下交易**:通道建立后,双方可以直接交换签名的余额更新,这些更新是链下进行的,不需要经过全网确认,从而大大提高了交易速度。 + - **关闭通道**:当两方不再需要继续交易时,可以选择关闭通道。此时通道的最终余额状态会作为一次链上交易记录在比特币区块链上。这样可以极大减少区块链的负担,因为多笔交易只需记录两次链上交易(开通和关闭)。 + +### 2. **闪电网络中的交易机制** + +在闪电网络中,通道内的交易是即时确认的。具体过程如下: + - **增量余额更新**:每次链下交易只更新支付通道中的余额状态,而不广播至比特币区块链。 + - **去中心化的信任交易**:每次状态更新都由双方签名确认,确保任何一方都无法篡改交易余额,避免了一方试图多拿资金的可能。 + +### 3. **跨通道支付的路由** + +闪电网络不仅限于两个通道用户间的直接支付,还支持多跳支付,使得资金能够通过多个通道转账给目标用户。具体过程如下: + - **路径查找**:如果两个用户之间没有直接的通道,网络会寻找合适的路径通过其他节点完成支付。 + - **支付的原子性**:只有在路径中所有中间节点同意并完成自己的部分支付时,整个支付才会完成,确保资金在多跳过程中不被截留。 + +### 4. **主要优势** + + - **扩展性**:通过链下交易的方式,闪电网络大幅减少了比特币区块链的负载,理论上可以支持每秒数百万次交易。 + - **降低费用**:大部分交易是链下进行的,交易费用很低,仅需链上交易费用的一小部分。 + - **即时支付**:闪电网络的交易几乎是即时完成的,使其适用于日常消费,而不像链上交易那样可能需要数分钟。 + +### 5. **挑战与局限性** + + - **流动性要求**:为了确保大额交易畅通,路径中的每个节点必须在通道中拥有足够的资金,否则可能会阻塞交易。 + - **通道管理**:用户需要手动开通和关闭通道,每次操作都需支付链上费用,因此频繁操作的成本较高。 + - **安全风险**:虽然闪电网络安全性较高,但它并非没有风险。节点需要保持在线以防止攻击者试图广播过时的交易。 + +### 6. **闪电网络的应用场景及未来** + + - **小额支付**:由于费用低廉,闪电网络非常适合进行小额支付,如内容打赏、小额捐赠和应用内购买等。 + - **商户和零售**:交易速度接近实时,闪电网络能使比特币成为零售、餐饮等日常消费的理想支付方式。 + - **跨境支付**:它能快速且低成本地实现国际汇款,为跨境支付提供了一种便利的途径。 + +闪电网络随着开发和用户的持续增长在不断发展。它为解决比特币的扩展性提供了一个极具前景的方案,但要充分发挥其潜力,还需要一个可靠且强大的节点网络支持。 \ No newline at end of file diff --git a/BTC/Advanced/Lighting Network/config/index.md b/BTC/Advanced/Lighting Network/config/index.md new file mode 100644 index 000000000..ed0a9da71 --- /dev/null +++ b/BTC/Advanced/Lighting Network/config/index.md @@ -0,0 +1,106 @@ +要在比特币节点上配置和运行闪电网络节点,需要执行以下步骤。配置过程涉及安装比特币全节点、下载闪电网络节点软件(如 `lnd` 或 `c-lightning`),并设置基本的连接和通道参数。以下是详细步骤: + +### 步骤 1:安装比特币全节点 + +1. **下载比特币核心(Bitcoin Core)**: + - 在 [比特币官网](https://bitcoin.org/en/download)下载最新版 Bitcoin Core 软件,并按照官方文档安装。 + +2. **启动比特币节点**: + - 使用以下命令启动比特币节点: + ```bash + bitcoind -daemon + ``` + - 节点需要同步区块链数据,建议启用 `pruned` 模式,以节省存储空间。 + +3. **修改 `bitcoin.conf` 配置文件**: + - 打开 `bitcoin.conf` 文件(通常位于 `~/.bitcoin/bitcoin.conf`)并添加以下内容以支持闪电网络: + ```ini + server=1 + txindex=1 + rpcuser=your_rpc_user + rpcpassword=your_rpc_password + ``` + +### 步骤 2:选择并安装闪电网络节点软件 + +目前,主流的闪电网络实现有 `lnd`(Lightning Labs)、`c-lightning`(Blockstream)和 `eclair`(ACINQ)。以 `lnd` 为例: + +1. **下载并安装 `lnd`**: + - 可以在 [GitHub](https://github.com/lightningnetwork/lnd) 下载最新版本的 `lnd`。 + - 安装完 `lnd` 后,使用以下命令启动 `lnd` 服务: + ```bash + lnd + ``` + +2. **配置 `lnd.conf` 文件**: + - 在 `~/.lnd/lnd.conf` 文件中设置基本配置,连接到比特币节点: + ```ini + [Application Options] + alias=YourNodeAlias # 设置节点的别名 + color=#FF0000 # 设置节点颜色(十六进制) + + [Bitcoin] + bitcoin.active=1 + bitcoin.mainnet=1 # 或 bitcoin.testnet=1 用于测试网 + bitcoin.node=bitcoind + + [Bitcoind] + bitcoind.rpcuser=your_rpc_user + bitcoind.rpcpass=your_rpc_password + bitcoind.rpchost=localhost + bitcoind.zmqpubrawblock=tcp://127.0.0.1:28332 + bitcoind.zmqpubrawtx=tcp://127.0.0.1:28333 + ``` + +### 步骤 3:启动并初始化闪电网络节点 + +1. **初始化闪电网络节点**: + - 使用以下命令启动 `lnd` 并生成钱包: + ```bash + lncli create + ``` + - 你将被要求设置密码并备份助记词,这对于保护你的资金非常重要。 + +2. **启动和连接**: + - 启动 `lnd` 服务后,可以使用 `lncli` 命令管理和查询节点状态。例如: + ```bash + lncli getinfo + ``` + +### 步骤 4:建立闪电网络支付通道 + +1. **获取资金**: + - 首先为节点充值比特币。可以使用 `lncli newaddress` 获取节点地址,然后从外部钱包转账。 + +2. **打开通道**: + - 使用以下命令来打开通道: + ```bash + lncli openchannel --node_key=对方节点公钥 --local_amt=通道资金 + ``` + - 其中 `node_key` 是对方节点的公钥,`local_amt` 是设置的通道资金数量。 + +3. **监控通道状态**: + - 打开通道后,可以使用 `lncli listchannels` 查看通道状态,并确保通道正常运行。 + +### 步骤 5:管理和使用闪电网络节点 + +1. **发送和接收支付**: + - 可以通过 `lncli` 发起支付,或生成支付请求让他人向你支付。 + - 例如,生成收款请求: + ```bash + lncli addinvoice --amt=金额 + ``` + - 通过支付请求二维码或字符串,其他用户可以通过他们的闪电节点完成支付。 + +2. **关闭通道**: + - 如果不再需要通道,可以通过以下命令手动关闭: + ```bash + lncli closechannel --funding_txid=交易ID --output_index=输出索引 + ``` + +3. **备份和恢复**: + - 为了防止意外情况,定期备份数据至安全位置。`lnd` 支持通道备份,可以使用 `lncli exportchanbackup` 导出备份文件。 + +### 小结 + +通过以上步骤,您可以成功配置并运行闪电网络节点。闪电网络通过支付通道的机制,降低比特币链上负载,实现了低成本、快速的小额支付。 \ No newline at end of file diff --git a/BTC/Advanced/Lighting Network/config/index.sh b/BTC/Advanced/Lighting Network/config/index.sh new file mode 100644 index 000000000..009fc15ba --- /dev/null +++ b/BTC/Advanced/Lighting Network/config/index.sh @@ -0,0 +1,79 @@ + +### 设置并启动闪电网络节点的 Shell 脚本 + +```bash +#!/bin/bash + +# 设置变量 +BITCOIN_USER="your_rpc_user" # 替换为你的比特币 RPC 用户名 +BITCOIN_PASSWORD="your_rpc_password" # 替换为你的比特币 RPC 密码 +BITCOIN_CONF_PATH="$HOME/.bitcoin/bitcoin.conf" +LND_CONF_PATH="$HOME/.lnd/lnd.conf" + +# 步骤 1:安装必要的依赖项 +echo "Updating system and installing dependencies..." +sudo apt-get update -y && sudo apt-get upgrade -y +sudo apt-get install -y wget jq unzip + +# 步骤 2:下载并安装 Bitcoin Core +echo "Downloading and installing Bitcoin Core..." +wget https://bitcoin.org/bin/bitcoin-core-24.0.1/bitcoin-24.0.1-x86_64-linux-gnu.tar.gz +tar -xzf bitcoin-24.0.1-x86_64-linux-gnu.tar.gz +sudo install -m 0755 -o root -t /usr/local/bin bitcoin-24.0.1/bin/* + +# 步骤 3:配置比特币节点 +echo "Configuring Bitcoin node..." +mkdir -p "$HOME/.bitcoin" +cat < "$BITCOIN_CONF_PATH" +server=1 +txindex=1 +prune=600 # 如果存储空间有限 +rpcuser=$BITCOIN_USER +rpcpassword=$BITCOIN_PASSWORD +EOF + +# 启动比特币节点 +echo "Starting Bitcoin node..." +bitcoind -daemon +sleep 10 # 等待节点启动 + +# 步骤 4:下载并安装 lnd +echo "Downloading and installing lnd..." +wget https://github.com/lightningnetwork/lnd/releases/download/v0.15.0-beta/lnd-linux-amd64-v0.15.0-beta.tar.gz +tar -xzf lnd-linux-amd64-v0.15.0-beta.tar.gz +sudo install -m 0755 -o root -t /usr/local/bin lnd-linux-amd64-*/lnd +sudo install -m 0755 -o root -t /usr/local/bin lnd-linux-amd64-*/lncli + +# 步骤 5:配置 lnd 节点 +echo "Configuring lnd node..." +mkdir -p "$HOME/.lnd" +cat < "$LND_CONF_PATH" +[Application Options] +alias=YourNodeAlias # 设置节点别名 +color=#FF0000 # 设置节点颜色 + +[Bitcoin] +bitcoin.active=1 +bitcoin.mainnet=1 +bitcoin.node=bitcoind + +[Bitcoind] +bitcoind.rpcuser=$BITCOIN_USER +bitcoind.rpcpass=$BITCOIN_PASSWORD +bitcoind.rpchost=localhost +bitcoind.zmqpubrawblock=tcp://127.0.0.1:28332 +bitcoind.zmqpubrawtx=tcp://127.0.0.1:28333 +EOF + +# 步骤 6:启动 lnd 节点 +echo "Starting lnd node..." +lnd --configfile="$LND_CONF_PATH" & + +# 步骤 7:等待 lnd 启动后初始化钱包 +sleep 15 # 等待 lnd 完全启动 +echo "Creating lnd wallet..." +echo "Please follow the instructions to create a wallet for your lnd node:" +lncli create + +echo "Lightning Network node setup is complete!" +``` \ No newline at end of file diff --git a/BTC/Advanced/Lighting Network/technical/imgs/offchain.png b/BTC/Advanced/Lighting Network/technical/imgs/offchain.png new file mode 100644 index 000000000..0061356df Binary files /dev/null and b/BTC/Advanced/Lighting Network/technical/imgs/offchain.png differ diff --git a/BTC/Advanced/Lighting Network/technical/imgs/open.png b/BTC/Advanced/Lighting Network/technical/imgs/open.png new file mode 100644 index 000000000..2062ebcd7 Binary files /dev/null and b/BTC/Advanced/Lighting Network/technical/imgs/open.png differ diff --git a/BTC/Advanced/Lighting Network/technical/imgs/route.png b/BTC/Advanced/Lighting Network/technical/imgs/route.png new file mode 100644 index 000000000..7c2f110dd Binary files /dev/null and b/BTC/Advanced/Lighting Network/technical/imgs/route.png differ diff --git a/BTC/Advanced/Lighting Network/technical/imgs/transfer.png b/BTC/Advanced/Lighting Network/technical/imgs/transfer.png new file mode 100644 index 000000000..445ce7543 Binary files /dev/null and b/BTC/Advanced/Lighting Network/technical/imgs/transfer.png differ diff --git a/BTC/Advanced/Lighting Network/technical/index.md b/BTC/Advanced/Lighting Network/technical/index.md new file mode 100644 index 000000000..d3bca6900 --- /dev/null +++ b/BTC/Advanced/Lighting Network/technical/index.md @@ -0,0 +1,75 @@ +闪电网络(Lightning Network,LN)是一种基于比特币区块链的**第二层支付协议**,旨在解决比特币主网的可扩展性和交易效率问题。它通过引入**支付通道**和**离线交易机制**,极大地减少了对链上交易的依赖,从而提升交易速度和降低成本。以下是闪电网络的主要技术原理。 + + +### 1. **支付通道的概念** + +支付通道是指两个用户之间创建的**链下交易**路径,允许双方在通道内多次转账,而无需每笔交易都记录在主链上。只在开通和关闭通道时需要链上交易,以确保资金安全。这种方式被称为“链下交易”,通过支付通道,双方可以在不影响区块链的情况下快速、安全地互相转账。 + +- **开通通道**:用户 A 和用户 B 向一个多重签名地址存入比特币,该地址需要两方的签名才能支出资金。 +- **更新余额**:两方可以通过交换新的余额分配签名,来更新支付通道的余额,而不进行链上记录。 +- **关闭通道**:当用户希望关闭通道时,最后的余额分配会提交到链上,进行最终结算。 + + +![offchain transaction](./imgs/offchain.png) + +### 2. **哈希时间锁定合约(HTLC)** + +HTLC 是闪电网络中的关键技术,用于确保链下交易的安全性。它通过**哈希锁定和时间锁定**的组合,让资金只有在特定条件满足时才会被转移,从而防止一方在交易完成前恶意撤回资金。 + +- **哈希锁定**:支付者生成一个随机数,并将其哈希值发送给接收者。接收者只有在知道该哈希值的原始输入时,才能解锁资金。 +- **时间锁定**:如果接收者未在指定时间内解锁资金,支付者可以撤销交易。这防止了接收者长时间不领取资金的情况。 + +HTLC 使闪电网络能够跨越多个节点转账,从而形成**跨通道的支付路径**,实现了网络的互联。 + +### 3. **路由支付** + +在闪电网络中,支付不需要直接的支付通道。即使没有直接的链下通道,用户也可以通过多个中介节点实现转账。闪电网络中的节点将自动寻找**最优路径**来完成支付,这一过程被称为路由。 + +- **多跳支付**:通过多个节点传递支付,用户可以利用其他节点作为中转站发送资金。 +- **路径发现和路由选择**:闪电网络使用路由协议(如 Onion 路由)找到最佳路径,确保资金在最短路径内传输,并提高了交易隐私性。 + + +![route pay](./imgs/route.png) + +### 4. **即时交易与低费用** + +与比特币区块链的**确认时间**相比,闪电网络中的链下交易几乎是即时的,因为交易只需双方签名并在通道中达成一致。而且,闪电网络的交易费用通常较低,仅需支付通道的维护费用或微量的路由费用,这使得其适合处理**小额支付**和**高频支付**。 + +### 5. **去中心化网络结构** + +闪电网络的设计是去中心化的,节点自由加入和退出,且不依赖于单一服务器或第三方。用户既可以选择与其他节点建立通道,也可以选择关闭通道。每个节点都可以自主设置路由费用,以激励更多节点参与进来,从而扩大网络的支付能力和覆盖范围。 + +### 6. **链下结算和通道关闭** + +闪电网络中的所有链下交易都是基于承诺的状态更新协议。只有当通道关闭时,链下的最后交易状态才会记录在链上: + +- **双向承诺**:在链下交易的过程中,任何一方都可以选择关闭通道,最后的余额状态将提交到链上,并进行结算。 +- **惩罚机制**:如果一方试图在链上提交过期的余额分配,另一方可以提交最新的状态,没收对方的余额。这种机制保证了用户不会恶意提交无效交易。 + +### 7. **闪电网络的优点和挑战** + +**优点**: +- **扩展性**:通过链下交易和支付通道,大大减轻了区块链的负担。 +- **低费用**:只在开通、关闭通道时支付链上交易费用,其余链下交易几乎无费用。 +- **隐私性**:交易不直接记录在区块链上,增强了交易隐私性。 +- **实时交易**:链下交易几乎是即时完成的。 + +**挑战**: +- **通道流动性**:当通道内的资金耗尽时,需要重新注资或重新开通新通道。 +- **网络连通性**:尽管闪电网络允许通过多跳支付进行路由,但找到稳定的路径可能会变得复杂。 +- **脱机风险**:由于是链下交易,断开网络或节点意外退出可能会影响交易的正常进行。 + +### 示例:使用闪电网络支付流程 + +1. **Alice 和 Bob 开通支付通道**:Alice 和 Bob 创建一个多重签名地址,并将 5 BTC 存入其中。 +![open channel](./imgs/open.png) + +2. **支付流程**:Alice 想给 Charlie 支付 1 BTC。Alice 和 Charlie 没有直接的通道,但 Bob 与 Charlie 之间有一个通道。因此,Alice 可以通过 Bob 将这笔金额转给 Charlie。 +3. **HTLC 保护**:Alice 创建一个 HTLC,将 1 BTC 锁定到 Bob,要求 Charlie 提供随机数来解锁。Bob 通过 Charlie 完成支付。 +4. **支付完成**:Charlie 提供随机数,Bob 获得资金解锁权,并最终完成 Alice 到 Charlie 的支付。 +![transfer](./imgs/transfer.png) + + +### 总结 + +闪电网络通过支付通道和 HTLC 实现了离线链下交易,同时通过去中心化的路由机制保证了可扩展性和交易隐私。尽管其实现和配置稍显复杂,但闪电网络为比特币和其他区块链提供了一种有效的扩容解决方案,极大地提升了区块链的应用潜力。 \ No newline at end of file diff --git a/BTC/Basic/hdwallet/README.md b/BTC/Basic/hdwallet/README.md new file mode 100644 index 000000000..b1562429c --- /dev/null +++ b/BTC/Basic/hdwallet/README.md @@ -0,0 +1,37 @@ +HD钱包,全称为分层确定性钱包(Hierarchical Deterministic Wallet),是一种通过单一的种子(Seed)生成和管理多个密钥对的数字钱包。这种结构使得用户只需备份一次种子,即可控制所有衍生出的私钥和公钥,极大地简化了密钥管理的复杂性。 + +**HD钱包的主要特点:** + +1. **分层结构:** HD钱包采用树状结构,根节点由主密钥(Master Key)组成,子节点为从主密钥派生出的子密钥。这种分层设计允许用户根据需要生成不同层级的密钥,方便管理和分配。 + +2. **确定性:** 通过相同的种子,HD钱包可以生成相同的密钥序列。这意味着只要备份了种子,就可以在任何时候恢复所有的密钥和地址。 + +3. **增强的隐私性:** HD钱包可以为每笔交易生成不同的地址,避免重复使用同一地址,从而提高交易的隐私性。 + +**HD钱包的工作原理:** + +- **种子生成:** 用户首先生成一个随机数作为种子,通常通过助记词(Mnemonic)表示。助记词是一组易于记忆的单词序列,用于表示种子。 + +- **主密钥派生:** 通过种子,使用特定的算法(如HMAC-SHA512)生成主私钥和主公钥。 + +- **子密钥派生:** 从主密钥可以派生出多个子密钥,每个子密钥又可以派生出自己的子密钥,形成树状结构。这种派生过程可以根据需要进行多层次的扩展。 + +**HD钱包的优势:** + +- **简化备份:** 用户只需备份一次种子或助记词,即可恢复所有的密钥和地址,避免了逐个备份每个私钥的麻烦。 + +- **灵活的密钥管理:** 分层结构允许用户根据不同的用途或账户生成不同的子密钥,方便管理。 + +- **增强的安全性:** 通过生成不同的地址,减少了地址关联性,提升了交易的隐私性和安全性。 + +**HD钱包的标准:** + +HD钱包的概念最早由BIP32提案提出,随后BIP39引入了助记词的标准,BIP44则定义了多币种、多账户的路径标准。这些标准共同构建了当前HD钱包的基础。 + +**注意事项:** + +- **妥善保管助记词:** 助记词是恢复钱包的唯一凭证,一旦丢失或泄露,可能导致资产无法找回或被盗。 + +- **定期备份:** 虽然HD钱包简化了备份过程,但仍需定期检查备份的有效性,确保在需要时能够成功恢复。 + +总的来说,HD钱包通过分层确定性的设计,提供了高效、安全且灵活的密钥管理方式,已成为当前数字货币钱包的主流选择。 \ No newline at end of file diff --git a/BTC/Basic/hdwallet/derive.md b/BTC/Basic/hdwallet/derive.md new file mode 100644 index 000000000..442c1585c --- /dev/null +++ b/BTC/Basic/hdwallet/derive.md @@ -0,0 +1,124 @@ +HD钱包(Hierarchical Deterministic Wallet)通过分层确定性结构生成和管理密钥对。其核心在于通过种子生成主密钥,然后通过分层推导生成多个子密钥。这种方式使得密钥管理变得简单、安全,用户只需备份种子即可恢复整个钱包。以下是HD钱包的详细技术细节和子密钥推导过程。 + +### 1. **HD钱包结构概述** +- **种子(Seed)**:HD钱包从一个随机生成的种子开始,该种子通过助记词(BIP39)表示。 +- **主密钥(Master Key)**:由种子生成,包含主私钥、主公钥和链码。 +- **链码(Chain Code)**:用于生成子密钥,是密钥派生过程中的关键成分。 +- **子密钥**:从主密钥派生而来,每个子密钥都有自己的私钥、公钥和链码。 + +### 2. **种子生成** +- **助记词**:助记词由熵(随机位数)通过哈希和校验生成。例如,一个128位的熵可以生成12个助记词。 +- **种子生成算法**: + - 助记词经过PBKDF2(Password-Based Key Derivation Function 2)算法与一个盐值(通常是 `mnemonic` + 密码短语)组合,生成512位种子。 + +### 3. **主密钥生成** +- 使用HMAC-SHA512算法,以种子作为输入,和常量字符串“Bitcoin seed”作为HMAC密钥来生成512位输出。 +- 输出前256位为主私钥(`m`),后256位为链码(`c`)。 + + **HMAC计算公式**: + ``` + I = HMAC-SHA512(key="Bitcoin seed", data=seed) + ``` + ``` + master_private_key = I[0:32] + master_chain_code = I[32:64] + ``` + +### 4. **子密钥推导过程** +子密钥推导是HD钱包中生成子密钥的核心过程,可以通过**标准派生**和**硬化派生**来实现。 + +#### a. **标准派生(Non-hardened derivation)** +- 使用父公钥和链码推导子公钥,公钥和链码可以生成下一级的公钥链,但无法推导出私钥。 +- 算法: + ``` + I = HMAC-SHA512(key=cpar, data=serP(Kpar) || ser32(i)) + ``` + - `cpar`:父链码。 + - `serP(Kpar)`:父公钥的序列化形式。 + - `ser32(i)`:索引值的32位表示。 + - `I` 分成两部分:`IL`(左半部分)和 `IR`(右半部分)。 + +- 子私钥计算公式: + ``` + ki = (IL + kpar) % n + ci = IR + ``` + - `ki`:子私钥。 + - `n`:椭圆曲线的阶。 + +#### b. **硬化派生(Hardened derivation)** +- 使用父私钥生成子私钥。硬化派生增加了安全性,不能从子公钥推导出父密钥。 +- 算法: + ``` + I = HMAC-SHA512(key=cpar, data=0x00 || ser256(kpar) || ser32(i)) + ``` + - `0x00` 前缀用于表示该派生使用的是私钥。 + - `kpar` 是父私钥。 + - `ci = IR` 是子链码。 + +- 子私钥计算公式: + ``` + ki = (IL + kpar) % n + ci = IR + ``` + +### 5. **路径表示** +BIP44引入了用于多币种和多账户的标准路径表示: +``` +m / purpose' / coin_type' / account' / change / address_index +``` +- **`purpose'`**:通常为44',表示使用BIP44规范。 +- **`coin_type'`**:用于区分不同的加密货币,比如0'代表比特币,60'代表以太坊。 +- **`account'`**:账户编号,用于分离不同的账户。 +- **`change`**:0表示外部地址,1表示找零地址。 +- **`address_index`**:地址在账户中的索引。 + +同时在BIP49和BIP84中也基于BIP44做了扩展,形成我们现在经常见到的BTC多个地址 + +#### Legacy地址 - BIP44 +![Legacy:BIP44](./imgs/hd-wallets-derivation-paths-bip44.png) + +#### P2SH地址 - BIP49 +![Legacy:BIP49](./imgs/hd-wallets-derivation-paths-bip49.png) + +#### P2WPKH地址 - BIP84 +![Legacy:BIP84](./imgs/hd-wallets-derivation-paths-bip84.png) + + +### 6. **ECC与HD钱包** +HD钱包使用椭圆曲线加密(Elliptic Curve Cryptography, ECC)来确保公钥和私钥的安全性。公钥由私钥通过椭圆曲线点乘生成。标准加密算法如 `secp256k1` 在HD钱包中被广泛使用。 + +**公钥生成公式**: +``` +P = k * G +``` +- `P` 是公钥,`k` 是私钥,`G` 是椭圆曲线的生成点。 + +### 7. **实现细节示例** +使用JavaScript库实现HD钱包的生成和子密钥推导: + +```javascript +const bip32 = require('bip32'); +const bip39 = require('bip39'); + +// 生成助记词和种子 +const mnemonic = bip39.generateMnemonic(); +const seed = bip39.mnemonicToSeedSync(mnemonic); + +// 从种子生成HD钱包根节点 +const root = bip32.fromSeed(seed); + +// 派生路径:m/44'/0'/0'/0/0 +const child = root.derivePath("m/44'/0'/0'/0/0"); + +console.log('助记词:', mnemonic); +console.log('子公钥:', child.publicKey.toString('hex')); +console.log('子私钥:', child.toWIF()); +``` + +### 8. **安全性与注意事项** +- **助记词备份**:确保助记词安全存储,一旦丢失或泄露,可能导致资产永久损失或被盗。 +- **硬化派生的使用**:硬化派生确保公钥无法推导出父级私钥,提高了安全性,建议在生成重要的子密钥时使用。 + +### **总结** +HD钱包通过分层结构和确定性算法,为用户提供了简单的密钥管理方式。其分层树结构和子密钥推导机制使得一个种子就能生成无限数量的私钥和公钥,极大地提高了用户体验和安全性。 \ No newline at end of file diff --git a/BTC/Basic/hdwallet/imgs/hd-wallets-derivation-paths-bip44.png b/BTC/Basic/hdwallet/imgs/hd-wallets-derivation-paths-bip44.png new file mode 100644 index 000000000..53548c84e Binary files /dev/null and b/BTC/Basic/hdwallet/imgs/hd-wallets-derivation-paths-bip44.png differ diff --git a/BTC/Basic/hdwallet/imgs/hd-wallets-derivation-paths-bip49.png b/BTC/Basic/hdwallet/imgs/hd-wallets-derivation-paths-bip49.png new file mode 100644 index 000000000..bd1db95d5 Binary files /dev/null and b/BTC/Basic/hdwallet/imgs/hd-wallets-derivation-paths-bip49.png differ diff --git a/BTC/Basic/hdwallet/imgs/hd-wallets-derivation-paths-bip84.png b/BTC/Basic/hdwallet/imgs/hd-wallets-derivation-paths-bip84.png new file mode 100644 index 000000000..fc6667196 Binary files /dev/null and b/BTC/Basic/hdwallet/imgs/hd-wallets-derivation-paths-bip84.png differ diff --git a/README.md b/README.md index dd1ffa56c..617b027f9 100644 --- a/README.md +++ b/README.md @@ -291,7 +291,7 @@ Item list: - [Paradigm-ctf](https://github.com/paradigm-operations/paradigm-ctf-2021) - [Smart Contract CTF](https://blockchain-ctf.securityinnovation.com) 3. Safe development practices - - [Safety development practice of Solidity](https://github.com/slowmist/Knowledge-Base/blob/master/solidity-security-comprehensive-list-of-known-attack-vectors-and-common-anti-patterns-chinese.md) + - [Safety development practice of Solidity](https://github.com/slowmist/Knowledge-Base/blob/master/translations/solidity-security-comprehensive-list-of-known-attack-vectors-and-common-anti-patterns_zh-cn.md) 4. Integration of learning resources - [Awesome Blockchain Security](https://github.com/xxxeyJ/Awesome-Blockchain-Security) - [Immunefi ](https://immunefi.com/learn/) diff --git a/basic/11-react-express-hardhat/frontend/package-lock.json b/basic/11-react-express-hardhat/frontend/package-lock.json index cecb93653..074dd8e89 100644 --- a/basic/11-react-express-hardhat/frontend/package-lock.json +++ b/basic/11-react-express-hardhat/frontend/package-lock.json @@ -4095,9 +4095,9 @@ } }, "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", diff --git a/dao/DID/did.md b/dao/DID/did.md index a1388246e..642e2f863 100644 --- a/dao/DID/did.md +++ b/dao/DID/did.md @@ -1,4 +1,4 @@ # What is DID(Decentralized Identity) -**Decentralised identity** is an emerging concept that gives back control of identity to consumers through the use of an identity wallet in which they collect verified information about themselves from certified issuers (such as the Government). By controlling what information is shared from the wallet to requesting 3rd parties (e.g., when registering for a new online service), the user is able to better manage their identity online and their privacy – for example, only presenting proof that they’re over 18 without needing to reveal their actual Date of Birth. +**Decentralized identity** is an emerging concept that gives back control of identity to consumers through the use of an identity wallet in which they collect verified information about themselves from certified issuers (such as the Government). By controlling what information is shared from the wallet to requesting 3rd parties (e.g., when registering for a new online service), the user is able to better manage their identity online and their privacy – for example, only presenting proof that they’re over 18 without needing to reveal their actual Date of Birth. diff --git a/dao/DID/idena.md b/dao/DID/idena.md index 5bdc46d0b..d14e057e0 100644 --- a/dao/DID/idena.md +++ b/dao/DID/idena.md @@ -6,7 +6,7 @@ Tl;NR Idena is a technique to prove YOU are a HUMAN without KYC. -**maybe the most important usage for Idena currently is the gitcoin trust, it worth 50% trust.** +**maybe the most important usage for Idena currently is the gitcoin trust, it is worth 50% trust.** @@ -93,7 +93,7 @@ maybe this is what most people care about. After you finish one validation sessi -## what can you get from validation? +## What can you get from validation? ### Identities, rewards and penalties in Idena diff --git a/dao/dao-faq.md b/dao/dao-faq.md index 068d6c33e..414414772 100644 --- a/dao/dao-faq.md +++ b/dao/dao-faq.md @@ -18,4 +18,47 @@ + 加入 ### 有没有一个文章,汇集目前所有DAO相关的工具信息的? -+ 请看这里 [tools-list](https://medium.com/1kxnetwork/organization-legos-the-state-of-dao-tooling-866b6879e93e) \ No newline at end of file ++ 请看这里 [tools-list](https://medium.com/1kxnetwork/organization-legos-the-state-of-dao-tooling-866b6879e93e) + +### 如何参与DAO的治理? ++ 通常DAO的治理是通过投票机制实现的,持有DAO的治理代币或NFT的成员可以参与投票。DAO会在官网、论坛或Discord上发布治理提案(例如Gitcoin DAO的治理论坛)。 ++ 一般步骤:1)注册或加入DAO的社群;2)获取治理代币;3)了解提案并参与投票。 ++ 投票可以在链上进行,也可以通过Snapshot等链下投票工具,具体根据DAO的治理模式。 + +### DAO的治理代币是什么?如何获取? ++ 治理代币是一种区块链代币,持有者可以参与DAO的决策。它类似于公司中的股份,但治理代币通常不代表所有权,而是用于决策投票。 ++ 获取方式:1)参与DAO的贡献任务;2)在特定平台上购买(如Uniswap);3)通过DAO的激励或空投获得。 + +### 什么是DAO的“去中心化”?是否所有DAO都完全去中心化? ++ “去中心化”意味着DAO没有一个单一的控制实体,而是由社区集体决策。但是,大多数DAO在早期仍由小团队或核心成员主导,以确保项目的初步发展。 ++ 随着DAO的发展,逐步实现去中心化。例如,一些DAO会在初期保留中心化的管理,以便快速决策,待生态成熟后逐渐向去中心化过渡。 + +### 参与DAO是否有风险? ++ 是的,参与DAO存在一些风险,例如智能合约漏洞、治理滥用、项目失败等。DAO的代码和治理机制如果设计不当,可能会导致资金损失或被恶意操控。 ++ 建议:在参与DAO之前,先研究项目的代码、审计报告、社区治理等,谨慎投资或贡献时间。 + +### 如何退出一个DAO? ++ 退出DAO通常没有严格限制,成员可以随时退出Discord或治理平台,也可以出售治理代币或NFT。如果参与DAO的治理代币持有者希望“退出”,可以选择在二级市场上卖出代币。 ++ 但需要注意的是,退出可能会导致丧失参与决策的权利,也可能面临代币价格波动的风险。 + +### 什么是DAO的金库(Treasury)? ++ DAO的金库是DAO持有的资金,用于支持DAO的运行和资助项目。金库中的资产可能包括治理代币、稳定币或其他加密资产。 ++ 金库资金的使用通常需要通过社区投票决定,以保证透明和公开。 + +### 如何看待DAO的透明性和安全性? ++ DAO的透明性和安全性依赖于其智能合约和治理机制。透明的DAO会公开所有决策、资金使用记录、代码等信息,以增强社区信任。 ++ 安全性方面,DAO的智能合约需要经过审计,定期检测潜在漏洞。社区应保持警惕,并及时处理安全事件。 + +### 什么是DAO的“贡献者”?如何成为一个DAO贡献者? ++ DAO的贡献者是那些直接参与DAO日常工作的成员,负责执行项目、维护社区、开发代码等。 ++ 成为贡献者的方式:1)在DAO的社群(如Discord)中展示技能和价值;2)完成任务或提案;3)与DAO核心团队联系,申请特定职位或任务。 + +### DAO与传统组织相比有什么优势? ++ **去中心化**:DAO通过智能合约实现自动化,减少对中介的依赖,赋予成员更大权力。 ++ **开放性**:DAO通常是开放的,任何人可以通过持有治理代币加入并参与治理。 ++ **快速决策**:通过链上投票或链下工具,DAO可以更快速、高效地达成决策。 ++ **透明性**:所有资金流动和决策记录在区块链上公开,提高了透明度。 + +### DAO的未来发展趋势是什么? ++ 目前,DAO在技术、治理模式、法务合规等方面仍在探索阶段,未来可能会发展出更成熟的工具和治理标准。 ++ 越来越多的项目和社区组织在采用DAO模式,未来可能会出现更多不同类型的DAO,如社交DAO、创作者DAO、公益DAO等。 \ No newline at end of file diff --git a/dao/dao-fast-link.md b/dao/dao-fast-link.md index 7f94f558c..2e404c302 100644 --- a/dao/dao-fast-link.md +++ b/dao/dao-fast-link.md @@ -7,26 +7,61 @@ ### Media #### Bankless -+ 致力于去银行化的,媒体起家现在复合型DAO + https://discord.gg/bjPz2w9Zts ++ 致力于去银行化,起家于媒体,现发展为多功能DAO,倡导金融自由和去中心化金融教育。 + +#### Forefront ++ https://www.forefront.market/ ++ 社交代币和Web3社区的媒体平台,汇集和分析代币经济、治理机制及DAO动态。 ### Invest #### DAOSquare -+ 国内较为早期的DAO,孵化器投资类型,目前最大? + https://www.daosquare.io/ ++ 国内较早期的投资类DAO,旨在孵化和支持Web3项目,通过社群力量推动早期项目发展。 #### BitDAO -+ BitDAO是一个旨在推动开放式金融发展的去中心化自治组织,投资涵盖的范围很广,包括 DeFi、DAO、NFT、游戏和其他区块链技术,将以研发、流动性引导和资金的形式为项目提供支持。 + https://www.bitdao.io/ ++ 推动开放金融发展,投资覆盖DeFi、NFT、游戏和其他区块链技术,通过研发和流动性引导支持创新项目。 + +#### Metacartel Ventures ++ https://metacartel.xyz/ ++ 专注于资助早期Web3项目的投资DAO,支持链上工具、DAO基础设施等领域,推动生态发展。 ### Hub #### DAOhaus -+ 在DAOhaus里可以使用它其提供的模板和工具,快速建立和启动自己的DAO。 + https://daohaus.club ++ 提供DAO创建模板和管理工具,帮助用户快速建立和启动自己的DAO,适合社区、项目等多种DAO模式。 -### DAO Operations +#### Aragon ++ https://aragon.org/ ++ 提供DAO框架,支持多种DAO结构,从简单投票到复杂治理模型,为项目提供治理工具。 -#### Coordinape +#### Colony ++ https://colony.io/ ++ 支持治理和协作的DAO框架,集成代币分配、薪酬机制、任务管理等功能,适合建立团队和项目DAO。 +### DAO Operations +#### Coordinape + https://coordinape.com/ -+ Coordinape 是 web3 原生的薪酬工具,从 Yearn 生态中诞生。这是一个基于同行评估机制的工具,贡献者可以根据其同事在一段时间内完成的工作量将「GIVE」代币分配给对方,用户根据他们从同行那里收到的「GIVE」代币数量按比例分配资金池。Bankless DAO 在使用这个工具进行 DAO 成员的薪酬发放。 \ No newline at end of file ++ Web3原生的薪酬工具,基于同行评估和代币分配机制,让贡献者依据同事评估获得报酬,已被Bankless DAO等广泛采用。 + +#### Snapshot ++ https://snapshot.org/ ++ 链下投票工具,用于治理投票、提案管理,减少链上成本,为多种DAO提供灵活的投票机制支持。 + +#### SourceCred ++ https://sourcecred.io/ ++ 贡献评估工具,追踪和评估社区成员的贡献,并发放代币奖励,提升DAO的参与度和活跃度。 + +### Grants +#### Gitcoin DAO ++ https://gitcoin.co/ ++ 专注于支持开源项目的资助平台,提供捐赠和资助功能,支持Web3生态中的开发者和项目成长。 + +#### Moloch DAO ++ https://molochdao.com/ ++ 资助以太坊生态和基础设施建设的DAO,以简单的“Rage Quit”机制保障资金和治理的安全性。 + +#### Aave Grants DAO ++ https://aavegrants.org/ ++ Aave生态的资助DAO,为开发者和社区成员提供项目支持资金,推动DeFi生态发展。 \ No newline at end of file diff --git a/dao/dao-project-research.md b/dao/dao-project-research.md index 90d55336b..1788c8795 100644 --- a/dao/dao-project-research.md +++ b/dao/dao-project-research.md @@ -1,14 +1,104 @@ # DAO 项目研究 -dao详细资料:https://www.bitmmp.com/index.php/topic,503649.msg503954.html#msg503954 -- Gnosis Safe - 多签钱包,通常用于管理社区的资金。 -- Snapshot - 链下投票平台,用于简单的基于代币治理。 -- Discourse - 论坛,通常用于讨论治理提议。 -- CollabLand - 机器人,对群组访问者的持币情况设限,并给群组提供信息。 -- Coordinape - 协作游戏,用于决定哪个贡献者应该获得代币奖励。 -- Parcel - 资金管理,能简单追踪和发送付款。 -- SourceCred - 追踪社区参与和奖励活跃成员的实例。 -- Mirror - 通过代币化众筹为创意项目融资。 -- Tally - 治理仪表盘,用于追踪不同协议的链上投票记录。 -- Boardroom - 持币者管理的治理中心,授权 (empower) 关键决策。 -- Sybil - 创建和追踪链上决策授权 (delegation)。 -- RabbitHole - 为完成特定链上任务奖励代币。 + +关于DAO的详细资料可以在这里找到:[BitMMP DAO详细信息](https://www.bitmmp.com/index.php/topic,503649.msg503954.html#msg503954)。 + +### 资金和财务管理工具 + +1. **Gnosis Safe** + - **描述**:多签钱包,通常用于管理社区的资金。 + +2. **Snapshot** + - **描述**:链下投票平台,用于简单的基于代币治理。 + +3. **Discourse** + - **描述**:论坛,通常用于讨论治理提议。 + +4. **CollabLand** + - **描述**:机器人,对群组访问者的持币情况设限,并提供群组信息。 + +5. **Coordinape** + - **描述**:协作游戏,用于决定哪个贡献者应该获得代币奖励。 + +6. **Parcel** + - **描述**:资金管理工具,能简单追踪和发送付款。 + +7. **SourceCred** + - **描述**:追踪社区参与和奖励活跃成员的实例。 + +8. **Mirror** + - **描述**:通过代币化众筹为创意项目融资的平台。 + +9. **Tally** + - **描述**:治理仪表盘,用于追踪不同协议的链上投票记录。 + +10. **Boardroom** + - **描述**:持币者管理的治理中心,授权关键决策。 + +11. **Sybil** + - **描述**:创建和追踪链上决策授权的工具。 + +12. **RabbitHole** + - **描述**:为完成特定链上任务奖励代币的平台。 + +### 额外的资金和财务管理工具 + +1. **Karma** + - **描述**:治理贡献追踪工具,记录用户在DAO中的投票和参与情况。 + +2. **OpenLaw** + - **描述**:基于智能合约的法律协议平台。 + +3. **DAOstack** + - **描述**:模块化DAO协议和工具包,用于创建和管理各种DAO功能。 + +4. **Sobol** + - **描述**:用于可视化DAO结构和成员关系的工具。 + +--- + +### 治理和决策工具 + +1. **Orca Protocol** + - **描述**:模块化治理协议,专注于小型工作组的治理。 + +2. **MolochDAO** + - **描述**:旨在简化提案和投票流程的治理框架。 + +3. **Aragon Court** + - **描述**:去中心化仲裁系统,用于解决DAO内部的争议。 + +--- + +### 项目协作和贡献者管理工具 + +1. **Dework** + - **描述**:为DAO内任务分配和协作量身定制的项目管理平台。 + +2. **Aragon Voice** + - **描述**:基于Aragon的无手续费投票系统的社区投票工具。 + +3. **Sablier** + - **描述**:实时支付工具,允许根据工作时间或任务完成情况进行支付流。 + +--- + +### 数据和分析工具 + +1. **DeepDAO** + - **描述**:用于DAO关键指标和活动的数据分析平台。 + +2. **Dune Analytics** + - **描述**:区块链数据分析平台,用户可以编写查询以分析公共区块链数据。 + +3. **Flipside Crypto** + - **描述**:用于DAO和DeFi项目的数据和分析平台。 + +--- + +### 贡献者奖励和激励工具 + +1. **SourceCred** + - **描述**:社区贡献奖励系统,根据社区活动分配代币。 + +2. **Otoco** + - **描述**:帮助DAO建立法律实体并与传统金融和法律系统连接的工具。 diff --git a/defi/DYDX/funding-rate.md b/defi/DYDX/funding-rate.md new file mode 100644 index 000000000..21b9fd5ac --- /dev/null +++ b/defi/DYDX/funding-rate.md @@ -0,0 +1,107 @@ +以下是关于 **DYDX 永续合约的资金费率 (Funding Rate)** 部分的 JS 实现分析,它是永续合约的重要机制,用于保持合约价格与现货市场价格一致。 + +### 资金费率 (Funding Rate) 简介 + +资金费率是多头和空头之间周期性交换的费用。 +它的计算基于以下公式: + +\[ +\text{Funding Rate} = \text{Index Price} - \text{Mark Price} +\] + +- **Mark Price**:交易所计算的当前合约价格。 +- **Index Price**:现货市场的参考价格。 + +资金费率正值时,多头支付空头;负值时,空头支付多头。 + +--- + +### 实现步骤 +以下是用 JavaScript 模拟资金费率的简单计算过程: + +#### 1. 数据初始化 + +```javascript +// 示例数据初始化 +const indexPrice = 1000; // 现货参考价格(美元) +const markPrice = 1005; // 永续合约标记价格(美元) +const positionSize = 10; // 持仓量(单位合约数) +const fundingInterval = 8; // 资金费率结算周期(每 8 小时一次) +``` + +#### 2. 计算资金费率 + +```javascript +function calculateFundingRate(indexPrice, markPrice) { + // 资金费率计算 + const fundingRate = (markPrice - indexPrice) / indexPrice; + return fundingRate; +} + +const fundingRate = calculateFundingRate(indexPrice, markPrice); +console.log(`Funding Rate: ${(fundingRate * 100).toFixed(2)}%`); +``` + +#### 3. 计算资金费用 + +```javascript +function calculateFundingPayment(fundingRate, positionSize, markPrice) { + // 资金费用 = 资金费率 * 持仓量 * 标记价格 + const fundingPayment = fundingRate * positionSize * markPrice; + return fundingPayment; +} + +const fundingPayment = calculateFundingPayment(fundingRate, positionSize, markPrice); +console.log(`Funding Payment: $${fundingPayment.toFixed(2)}`); +``` + +--- + +### **完整代码** + +```javascript +// 数据初始化 +const indexPrice = 1000; // 现货参考价格 +const markPrice = 1005; // 永续合约标记价格 +const positionSize = 10; // 持仓量 +const fundingInterval = 8; // 每8小时资金费率结算 + +// 计算资金费率 +function calculateFundingRate(indexPrice, markPrice) { + return (markPrice - indexPrice) / indexPrice; +} + +// 计算资金费用 +function calculateFundingPayment(fundingRate, positionSize, markPrice) { + return fundingRate * positionSize * markPrice; +} + +// 执行计算 +const fundingRate = calculateFundingRate(indexPrice, markPrice); +console.log(`Funding Rate: ${(fundingRate * 100).toFixed(2)}%`); + +const fundingPayment = calculateFundingPayment(fundingRate, positionSize, markPrice); +console.log(`Funding Payment: $${fundingPayment.toFixed(2)}`); +``` + +--- + +### **示例输出** + +假设: +- **Index Price** = $1000 +- **Mark Price** = $1005 +- **Position Size** = 10 + +运行结果: +``` +Funding Rate: 0.50% +Funding Payment: $50.25 +``` + +### **分析** +- 资金费率为 **0.5%**,意味着多头需要每 8 小时支付持仓价值的 0.5%。 +- 持仓者需支付 **$50.25** 的资金费用。 + +### **实际使用场景** +在 DYDX 平台上,类似计算通过链上合约自动执行,并根据市场条件动态调整。该机制能有效平衡多空双方的资金成本,确保合约价格与现货价格的紧密锚定。 \ No newline at end of file diff --git a/defi/DYDX/market-price.md b/defi/DYDX/market-price.md new file mode 100644 index 000000000..b091da652 --- /dev/null +++ b/defi/DYDX/market-price.md @@ -0,0 +1,162 @@ +在 DYDX 永续合约中,价格计算是基于 **标记价格(Mark Price)** 和 **指数价格(Index Price)**,它们是维护合约公平性的核心组件。 + +以下是如何通过 JavaScript 模拟 **DYDX 永续合约价格机制** 的分析和实现。 + +### 1. **核心概念** + +- **指数价格 (Index Price)**:从现货市场获取的加权平均价格,反映某资产的市场公平价格。 +- **标记价格 (Mark Price)**:合约的实际交易价格,用于计算未实现盈亏(PnL)和强制平仓。 +- **基差 (Basis)**:标记价格和指数价格之间的差异,通常受供需影响。 + +公式: +\[ +\text{Mark Price} = \text{Index Price} + \text{Basis} +\] + +### 2. **代码实现** + +以下是 JavaScript 模拟 DYDX 永续合约价格计算的代码示例。 + +#### **Step 1: 初始化数据** + +```javascript +// 初始化价格数据 +const indexPrice = 2000; // 指数价格,现货市场价格(USD) +let basis = 10; // 初始基差(USD) + +// 模拟标记价格计算 +function calculateMarkPrice(indexPrice, basis) { + return indexPrice + basis; +} + +const markPrice = calculateMarkPrice(indexPrice, basis); +console.log(`Mark Price: $${markPrice}`); +``` + +#### **Step 2: 模拟动态基差调整** + +基差会根据市场供需动态调整,以下代码演示如何实时计算新的标记价格。 + +```javascript +// 模拟基差动态调整 +function updateBasis(marketCondition) { + // 市场条件影响基差:市场多头占优,基差上升;空头占优,基差下降 + if (marketCondition === "bullish") { + basis += 5; // 多头主导,基差增加 + } else if (marketCondition === "bearish") { + basis -= 5; // 空头主导,基差减少 + } + return basis; +} + +// 模拟不同市场条件下的标记价格 +const marketConditions = ["bullish", "bearish", "neutral"]; +marketConditions.forEach((condition) => { + const updatedBasis = updateBasis(condition); + const updatedMarkPrice = calculateMarkPrice(indexPrice, updatedBasis); + console.log(`Market Condition: ${condition}`); + console.log(`Updated Mark Price: $${updatedMarkPrice}`); +}); +``` + +#### **Step 3: 实现未实现盈亏(PnL)计算** + +根据标记价格计算未实现盈亏,用于评估持仓的当前盈亏情况。 + +```javascript +// 计算未实现盈亏(PnL) +function calculatePnL(entryPrice, markPrice, positionSize) { + // PnL = (标记价格 - 入场价格) * 持仓量 + const pnl = (markPrice - entryPrice) * positionSize; + return pnl; +} + +// 示例数据 +const entryPrice = 1980; // 持仓的入场价格 +const positionSize = 2; // 持仓量(单位:合约) + +const pnl = calculatePnL(entryPrice, markPrice, positionSize); +console.log(`Unrealized PnL: $${pnl.toFixed(2)}`); +``` + +--- + +### **完整代码** + +```javascript +// 初始化 +const indexPrice = 2000; +let basis = 10; + +// 计算标记价格 +function calculateMarkPrice(indexPrice, basis) { + return indexPrice + basis; +} + +// 更新基差 +function updateBasis(marketCondition) { + if (marketCondition === "bullish") { + basis += 5; + } else if (marketCondition === "bearish") { + basis -= 5; + } + return basis; +} + +// 计算未实现盈亏 +function calculatePnL(entryPrice, markPrice, positionSize) { + return (markPrice - entryPrice) * positionSize; +} + +// 模拟 +const markPrice = calculateMarkPrice(indexPrice, basis); +console.log(`Initial Mark Price: $${markPrice}`); + +const marketConditions = ["bullish", "bearish", "neutral"]; +marketConditions.forEach((condition) => { + const updatedBasis = updateBasis(condition); + const updatedMarkPrice = calculateMarkPrice(indexPrice, updatedBasis); + console.log(`Market Condition: ${condition}`); + console.log(`Updated Mark Price: $${updatedMarkPrice}`); + + const pnl = calculatePnL(1980, updatedMarkPrice, 2); + console.log(`Unrealized PnL: $${pnl.toFixed(2)}\n`); +}); +``` + +--- + +### **示例输出** + +假设以下市场条件: +- **初始指数价格**:$2000 +- **初始基差**:$10 +- **入场价格**:$1980 +- **持仓量**:2 合约 + +运行结果: + +``` +Initial Mark Price: $2010 +Market Condition: bullish +Updated Mark Price: $2020 +Unrealized PnL: $80.00 + +Market Condition: bearish +Updated Mark Price: $2010 +Unrealized PnL: $60.00 + +Market Condition: neutral +Updated Mark Price: $2010 +Unrealized PnL: $60.00 +``` + +--- + +### **分析总结** + +1. **动态基差**:市场条件直接影响基差,从而影响标记价格。 +2. **未实现盈亏 (PnL)**:通过标记价格计算持仓的浮动盈亏,帮助用户实时评估风险。 +3. **链上计算**:在 DYDX 平台,这些计算由智能合约实时进行,确保透明性和公平性。 + +如果需要更复杂的分析(如多资产组合、自动强制平仓逻辑),可以扩展代码! \ No newline at end of file diff --git a/defi/DYDX/validium.md b/defi/DYDX/validium.md new file mode 100644 index 000000000..b26d052a1 --- /dev/null +++ b/defi/DYDX/validium.md @@ -0,0 +1,128 @@ +### **Validium 详解** + +**Validium** 是一种扩展解决方案,属于第二层(Layer 2)扩展技术,通过将大部分数据存储移出链,同时使用零知识证明(ZK-Proofs)保证安全性。Validium 旨在在不牺牲安全性的前提下,极大提高区块链网络的可扩展性和交易速度。 + +--- + +### **Validium 与 Rollup 的对比** + +| 特性 | Validium | Rollup | +|-----------------------|-------------------------------------------|------------------------------------------| +| **数据存储位置** | 链下(Off-Chain) | 链上(On-Chain) | +| **扩展性** | 更高,支持数千 TPS | 相对较低 | +| **安全性** | 基于零知识证明,信任模型取决于数据可用性 | 基于零知识或欺诈证明,完全链上验证 | +| **成本** | 更低,Gas 费用少 | 相对较高 | +| **主要用途** | 高频交易、支付网络 | DeFi 应用,如交易所、借贷协议 | + +--- + +### **Validium 的核心原理** + +1. **链下数据存储** + 在 Validium 中,交易数据存储在链下的服务器或分布式数据库中,而不是直接写入区块链。 + +2. **零知识证明(ZK-Proof)** + Validium 使用 zk-SNARK 或 zk-STARK 技术生成证明,链下数据的合法性由这些证明来验证。 + +3. **数据可用性保证** + 虽然数据存储在链下,但零知识证明确保数据的完整性和正确性,且数据可用性由多个节点维护。 + +--- + +### **JavaScript 实现零知识证明的示例** + +我们可以用 JavaScript 来模拟 Validium 的基本验证逻辑,假设交易数据存储在链下,同时生成和验证零知识证明。 + +#### **1. 安装 `snarkjs`** + +`snarkjs` 是一个流行的零知识证明库,支持 zk-SNARK 生成和验证。 + +```bash +npm install snarkjs +``` + +#### **2. 模拟交易验证过程** + +```javascript +const snarkjs = require("snarkjs"); + +(async () => { + // 链下交易数据 (模拟) + const offChainData = { + sender: "Alice", + receiver: "Bob", + amount: 100 + }; + + // 假设的零知识证明生成函数 + function generateProof(transaction) { + // 这里我们用简单逻辑模拟证明生成过程 + return { + proof: `proof-of-${transaction.sender}-to-${transaction.receiver}-${transaction.amount}`, + publicSignals: [transaction.sender, transaction.receiver, transaction.amount] + }; + } + + // 假设的验证函数 + function verifyProof(proof, expectedSignals) { + // 检查生成的 proof 和提供的 publicSignals 是否匹配 + const isValid = proof.publicSignals.every( + (value, index) => value === expectedSignals[index] + ); + + return isValid ? "Proof is valid" : "Proof is invalid"; + } + + // 生成零知识证明 + const proof = generateProof(offChainData); + + console.log("Generated Proof:", proof); + + // 验证零知识证明 + const result = verifyProof(proof, ["Alice", "Bob", 100]); + console.log("Verification Result:", result); +})(); +``` + +#### **输出结果** +```bash +Generated Proof: { proof: 'proof-of-Alice-to-Bob-100', publicSignals: [ 'Alice', 'Bob', 100 ] } +Verification Result: Proof is valid +``` + +--- + +### **Validium 在 DYDX 中的应用** + +DYDX 交易平台采用 Validium 技术,通过 StarkWare 的 StarkEx 系统实现: +- **链下存储用户账户余额和交易历史**,提高了吞吐量和交易速度。 +- **链上验证零知识证明**,确保交易数据的正确性和一致性。 + +--- + +### **Validium 的优势** + +1. **高扩展性** + Validium 支持每秒数千甚至数万笔交易,非常适合高频交易场景。 + +2. **低成本** + 由于链上存储和计算需求减少,交易成本显著降低。 + +3. **数据隐私** + 数据存储在链下,用户交易数据不会公开,提高隐私性。 + +--- + +### **适用场景** + +- **高频交易平台**:如 DYDX 等去中心化交易所。 +- **支付网络**:处理大量小额快速支付。 +- **NFT 市场**:高频铸造、交易和转移 NFT。 + +--- + +### **参考链接** + +- [Validium 技术介绍](https://www.chainnews.com/articles/669485806574.htm) +- [StarkWare 官网](https://starkware.co/) +- [snarkjs 官方文档](https://github.com/iden3/snarkjs) \ No newline at end of file diff --git a/defi/readme.md b/defi/readme.md index a0baa8093..639c56f9e 100644 --- a/defi/readme.md +++ b/defi/readme.md @@ -1,19 +1,106 @@ -# DEFI -DEFI学习路线图: -交易 -> 借贷 ->衍生品 -可以根据我们学习小组的学习路线图: -- 交易: uniV1(task13) -> uniV2 -> uniV3 -> CurveV1 -> CurveV2 -- 借贷: Aave -> Compound -> Liquity -> Euler -- 衍生品: SNX -> YFI -> Perpetual -> Opyn -- LSD/ReStaking Lido -> Eigenlayer -> Ether.fi -> Ethena.fi +# **DeFi 学习路线图** -**衍生品参项目** -DeFi 衍生全景图: https://github.com/0xperp/defi-derivatives +## **学习路径** -## 参考链接 +学习 DeFi 可按以下顺序进行,从基础到高级逐步深入: -- defi之道: https://docs.qq.com/doc/DVGJRRmJxUFhVc3Rv -- 量化分析书籍: https://github.com/SuperCV/Book -- DeFi Pulse网站(提供defi协议的最新分析和排名):https://defipulse.com/ -- Defi 论文集锦: https://github.com/bryanhpchiang/protocol-reading-list +1. **交易模块** + 探索不同版本的去中心化交易协议: + - UniSwap: UniV1 -> UniV2 -> UniV3 + - Curve: CurveV1 -> CurveV2 +2. **借贷模块** + 学习主流借贷协议的功能与机制: + - Aave + - Compound + - Liquity + - Euler + +3. **衍生品模块** + 了解去中心化金融衍生品的基本原理与实现: + - Synthetix (SNX) + - Yearn Finance (YFI) + - Perpetual Protocol + - Opyn + +4. **LSD/ReStaking 模块** + 深入探索流动性质押和重质押技术: + - Lido + - Eigenlayer + - Ether.fi + - Ethena.fi + +## **衍生品参考项目** + +- **DeFi 衍生全景图**: + [0xperp/defi-derivatives](https://github.com/0xperp/defi-derivatives) + 详细展示 DeFi 衍生品生态及其发展趋势。 + +## **推荐学习资源** + +### **学术与技术文献** +- **DeFi 论文集锦**: + [Protocol Reading List](https://github.com/bryanhpchiang/protocol-reading-list) + 汇总 DeFi 相关学术论文和技术报告,帮助深入理解协议设计原理。 + +- **慢雾的《黑暗森林》系列文章**: + 详解 DeFi 中的 MEV(最大可提取价值)与安全问题,提供经济攻击与防御策略的深入分析。 + [黑暗森林系列](https://github.com/slowmist/Blockchain-dark-forest-selfguard-handbook/blob/main/README_CN.md) + +- **Paradigm 研究文章**: + 聚焦前沿 DeFi 技术与经济模型分析。 + [Paradigm Research](https://www.paradigm.xyz/writing?page=1&s=0&sort=newest&tags=research) + +### **系统性学习资源** +- **DeFi 市场地图**: + [DeFi Llama](https://defillama.com/) + 提供 DeFi 协议的市场数据,追踪 TVL(总锁仓量)和生态趋势。 + +- **DeFi 开发指南**: + [OpenZeppelin 文档](https://docs.openzeppelin.com/) + 包括智能合约的安全开发指南和常用设计模式。 + +- **Consensys 开发者资源**: + [Consensys Docs](https://consensys.net/docs/) + 涵盖以太坊生态开发工具及 DeFi 应用开发实践。 + +### **技术博客与社区** +- **Defiant Newsletter**: + [Defiant](https://newsletter.thedefiant.io/) + 提供 DeFi 行业最新动态和深度分析。 + +- **Finematics 技术博客**: + [Finematics](https://finematics.com/) + 通过视频和文章深入剖析 DeFi 技术和协议设计,适合各层次学习者。 + +- **Crypto Twitter**: + 关注 DeFi 领域的知名创始人和开发者: + - Andre Cronje (YFI) + - Hayden Adams (UniSwap) + - Stani Kulechov (Aave) + +### **工具与模拟平台** +- **Dune Analytics**: + [Dune](https://dune.com/) + 提供强大的数据分析与可视化工具,支持创建自定义仪表盘,分析 DeFi 项目表现。 + +- **Tenderly**: + [Tenderly](https://tenderly.co/) + 支持智能合约实时监控、调试和性能优化。 + +- **BlockScience**: + [BlockScience](https://block.science/) + 用于模拟和验证 DeFi 策略的模型与工具。 + +### **视频学习** +- **Bankless YouTube 频道**: + [Bankless](https://www.youtube.com/c/Bankless) + 提供从基础到高级的 DeFi 视频课程,深入解读行业动态与实用策略。 + +- **CryptoZombies**: + [CryptoZombies](https://cryptozombies.io/) + 通过互动编程课程学习 Solidity,特别适合初学者。 + +--- + +通过这些资源,你可以从多个角度深入理解 DeFi 的技术、市场和发展趋势,为实际操作和开发奠定坚实基础。 \ No newline at end of file diff --git a/docs/books-en.md b/docs/books-en.md index f4cf613ce..e026dd4ca 100644 --- a/docs/books-en.md +++ b/docs/books-en.md @@ -1,4 +1,4 @@ -## Book recommendation +## Book Recommendation The document contains all kinds of classic books, including but not limited to "humanities", "economics", "social science", etc. - [《The fiscal code of the central Empire》](https://book.douban.com/subject/27007549/) diff --git a/docs/dao-en.md b/docs/dao-en.md index c605bd3fd..0dc098f73 100644 --- a/docs/dao-en.md +++ b/docs/dao-en.md @@ -40,7 +40,7 @@ Study in groups and show results (reference): ## Available PR Title Types -eEnsuring the title follows a specific format helps us manage and review code more effectively, please refer to the available types below: +Ensuring the title follows a specific format helps us manage and review code more effectively, please refer to the available types below: - **feat**: A new feature - **fix**: A bug fix