
从代码层面聊聊 PartyDao
今天来聊聊一个神奇的项目 PartyDAO,这个项目最近融资1640万美元,估值两亿美金,其来源于推特的一番对话,具体可以参考超哥的一篇文章:PartyDAO的故事,对话的后续是 Mirror 的创始人 Denis Nazarov 在推特上提出了一个想法并讲了基本的流程,我把整个逻辑翻译下如下: 如果部署自动一个 DAO 来竞标任何 NFT 拍卖,那不是很酷吗?给它起名 PartyBid,它包含以下功能:构造函数:auction_id任何人存入 ETH,取回 ERC20合同自动投标拍卖如果获胜,资助者将获得 NFT 的部分所有权如果输了,资金退回这个想法被一个程序员大佬 _anishagnihotri 看到了,于是他就在一个周末把这个功能实现了,在这里膜拜大佬,我们这里就看看整个代码是怎样实现的,首先大佬先把 Denis Nazarov 提出的想法扩展了下,想法毕竟是想法不是完整的 PM 需求,日常开发如果 PM 提出了这么个不完整的需求肯定是会挨程序员的骂的,但这里 anishagnihotri 显然是对这个想法感兴趣的,所以就把需求完善了下并描述了下该合约是如何工作的:首先部...

从代码层面聊聊 PartyDao
今天来聊聊一个神奇的项目 PartyDAO,这个项目最近融资1640万美元,估值两亿美金,其来源于推特的一番对话,具体可以参考超哥的一篇文章:PartyDAO的故事,对话的后续是 Mirror 的创始人 Denis Nazarov 在推特上提出了一个想法并讲了基本的流程,我把整个逻辑翻译下如下: 如果部署自动一个 DAO 来竞标任何 NFT 拍卖,那不是很酷吗?给它起名 PartyBid,它包含以下功能:构造函数:auction_id任何人存入 ETH,取回 ERC20合同自动投标拍卖如果获胜,资助者将获得 NFT 的部分所有权如果输了,资金退回这个想法被一个程序员大佬 _anishagnihotri 看到了,于是他就在一个周末把这个功能实现了,在这里膜拜大佬,我们这里就看看整个代码是怎样实现的,首先大佬先把 Denis Nazarov 提出的想法扩展了下,想法毕竟是想法不是完整的 PM 需求,日常开发如果 PM 提出了这么个不完整的需求肯定是会挨程序员的骂的,但这里 anishagnihotri 显然是对这个想法感兴趣的,所以就把需求完善了下并描述了下该合约是如何工作的:首先部...
DeFi 程序设计:Uniswap V2(2)
介绍今天我们将核心功能 Token 交换添加到我们的 Uniswap V2。去中心化代币交换是 Uniswap 的创建目的,今天我们将看看它是如何完成的。我们仍在研究 Pair 合约,这意味着我们的实现都是较底层的,没有 Web 界面,我们甚至不会进行价格计算! 此外,我们将实现一个价格预言机:后续接入仅需要几行代码即可。 此外,我将解释对合约实现背后的一些细节和想法,这在上一部分中我没有足够的说明。让我们开始!代币交换让我们想想我们将如何实现它。 交换意味着放弃一定数量的代币 A 以换取代币 B。但我们需要某种第三方:提供实际汇率。保证所有兑换均全额支付,即所有兑换均以正确汇率进行。 我们在研究流动性供应时了解了有关 DEX 定价的一些知识:它是定义汇率的池中的流动性数量。我详细解释了恒定乘积公式的工作原理以及成功交换的主要条件是什么。即:互换后的储备金乘积必须等于或大于互换前的乘积。 将代币转移给某人有两种方式:通过调用 transfer 代币合约的方法并传递给接收方的地址和要发送的金额。通过调用 approve 方法允许其他用户或合约将一定数量的代币授权到他们的地址,此后对...
DeFi 程序设计:Uniswap V2(2)
介绍今天我们将核心功能 Token 交换添加到我们的 Uniswap V2。去中心化代币交换是 Uniswap 的创建目的,今天我们将看看它是如何完成的。我们仍在研究 Pair 合约,这意味着我们的实现都是较底层的,没有 Web 界面,我们甚至不会进行价格计算! 此外,我们将实现一个价格预言机:后续接入仅需要几行代码即可。 此外,我将解释对合约实现背后的一些细节和想法,这在上一部分中我没有足够的说明。让我们开始!代币交换让我们想想我们将如何实现它。 交换意味着放弃一定数量的代币 A 以换取代币 B。但我们需要某种第三方:提供实际汇率。保证所有兑换均全额支付,即所有兑换均以正确汇率进行。 我们在研究流动性供应时了解了有关 DEX 定价的一些知识:它是定义汇率的池中的流动性数量。我详细解释了恒定乘积公式的工作原理以及成功交换的主要条件是什么。即:互换后的储备金乘积必须等于或大于互换前的乘积。 将代币转移给某人有两种方式:通过调用 transfer 代币合约的方法并传递给接收方的地址和要发送的金额。通过调用 approve 方法允许其他用户或合约将一定数量的代币授权到他们的地址,此后对...
DeFi 程序设计:Uniswap V2 系列1
什么是 Uniswap ?简单来说,Uniswap 是一个去中心化交易所(DEX),旨在成为中心化交易所的替代品。它在以太坊区块链上运行并且完全自动化:没有管理员或具有特权访问权限的用户。 更深层次的说法是,它是一种算法,允许创建交易池或者代币交易对,并为它们填充流动性,让用户使用这种流动性交换代币。这种算法称为自动做市商或自动流动性提供者。 那什么是做市商呢? 做市商 是向市场提供流动性(交易资产)的实体。交易的本质其实是流动性:如果您想出售某样东西但没有人购买,则不会进行交易。一些交易对具有高流动性(例如 BTC-USDT),但有些交易对的流动性低或根本没有流动性(例如一些山寨币)。 DEX(去中心化交易所) 必须有大量的流动性才能发挥作用,才有可能替换传统的中心化交易所。获得流动性的一个方法是 DEX 的开发者将他们自己的钱(或他们投资者的钱)投入其中,成为做市商。然而,这不是一个现实的解决方案,因为考虑到 DEX 允许任何代币之间的交换,他们需要大量的资金来为所有货币对提供足够的流动性。此外,这将使 DEX 中心化:作为唯一的做市商,开发人员将在他们手中拥有大量的权力,这...
DeFi 程序设计:Uniswap V2 系列1
什么是 Uniswap ?简单来说,Uniswap 是一个去中心化交易所(DEX),旨在成为中心化交易所的替代品。它在以太坊区块链上运行并且完全自动化:没有管理员或具有特权访问权限的用户。 更深层次的说法是,它是一种算法,允许创建交易池或者代币交易对,并为它们填充流动性,让用户使用这种流动性交换代币。这种算法称为自动做市商或自动流动性提供者。 那什么是做市商呢? 做市商 是向市场提供流动性(交易资产)的实体。交易的本质其实是流动性:如果您想出售某样东西但没有人购买,则不会进行交易。一些交易对具有高流动性(例如 BTC-USDT),但有些交易对的流动性低或根本没有流动性(例如一些山寨币)。 DEX(去中心化交易所) 必须有大量的流动性才能发挥作用,才有可能替换传统的中心化交易所。获得流动性的一个方法是 DEX 的开发者将他们自己的钱(或他们投资者的钱)投入其中,成为做市商。然而,这不是一个现实的解决方案,因为考虑到 DEX 允许任何代币之间的交换,他们需要大量的资金来为所有货币对提供足够的流动性。此外,这将使 DEX 中心化:作为唯一的做市商,开发人员将在他们手中拥有大量的权力,这...
签署和验证以太坊签名
以太坊交易需要被包含在一个区块中并被挖掘,然后才能被处理并保存在区块链上。因此,链上交易需要时间和成本来补偿矿工的工作。 相比之下,链下计算可以让您立即执行操作,而无需等待交易被挖掘,并且不消耗任何气体。 在本文中,让我们看看如何使用以太坊签名执行链下计算。加密签名可用于验证消息的来源和完整性。然后,我们将研究现实生活中的链下计算用例,例如去中心化交易所、状态通道和元交易。背景在去中心化交易所中,签名和链下计算用于预先授权做市商执行任何由做市商签署的订单。制造商不是直接在链上发布买卖订单,而是使用他们的私钥签署详细说明他们订单的消息。然后,制造商将这些已签署的订单提交到链下订单簿——由第三方中继器托管在中央服务器上的数据库——供接受者浏览和填写。这些链下订单会立即在链下提交,无需支付任何 gas。 使脱链订单簿起作用的神奇成分是加密签名。 加密签名是支持所有区块链技术的基础计算机科学原语。签名可用于代表签名者授权交易。它还可以用于向智能合约证明某个帐户批准了某个消息,以太坊这里采用的是椭圆曲线数字签名算法(ECDSA)签名和验证签名以太坊网络中的每个账户都有一个公钥和一个私钥。以...
签署和验证以太坊签名
以太坊交易需要被包含在一个区块中并被挖掘,然后才能被处理并保存在区块链上。因此,链上交易需要时间和成本来补偿矿工的工作。 相比之下,链下计算可以让您立即执行操作,而无需等待交易被挖掘,并且不消耗任何气体。 在本文中,让我们看看如何使用以太坊签名执行链下计算。加密签名可用于验证消息的来源和完整性。然后,我们将研究现实生活中的链下计算用例,例如去中心化交易所、状态通道和元交易。背景在去中心化交易所中,签名和链下计算用于预先授权做市商执行任何由做市商签署的订单。制造商不是直接在链上发布买卖订单,而是使用他们的私钥签署详细说明他们订单的消息。然后,制造商将这些已签署的订单提交到链下订单簿——由第三方中继器托管在中央服务器上的数据库——供接受者浏览和填写。这些链下订单会立即在链下提交,无需支付任何 gas。 使脱链订单簿起作用的神奇成分是加密签名。 加密签名是支持所有区块链技术的基础计算机科学原语。签名可用于代表签名者授权交易。它还可以用于向智能合约证明某个帐户批准了某个消息,以太坊这里采用的是椭圆曲线数字签名算法(ECDSA)签名和验证签名以太坊网络中的每个账户都有一个公钥和一个私钥。以...
合约多签代码
Dao 发起提案的时候可以利用多签的特性,或者多签钱包也可以。 示例代码以及注释如下:// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract MultiSigWallet { event Deposit(address indexed sender, uint amount, uint balance); //存款事件 event SubmitTransaction( address indexed owner, uint indexed txIndex, address indexed to, uint value, bytes data ); // 提交一笔交易事件 event ConfirmTransaction(address indexed owner, uint indexed txIndex); // 确认一笔交易事件 event RevokeConfirmation(address indexed owner, uint indexed txIndex); // 撤销一笔交易事件 event...
合约多签代码
Dao 发起提案的时候可以利用多签的特性,或者多签钱包也可以。 示例代码以及注释如下:// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract MultiSigWallet { event Deposit(address indexed sender, uint amount, uint balance); //存款事件 event SubmitTransaction( address indexed owner, uint indexed txIndex, address indexed to, uint value, bytes data ); // 提交一笔交易事件 event ConfirmTransaction(address indexed owner, uint indexed txIndex); // 确认一笔交易事件 event RevokeConfirmation(address indexed owner, uint indexed txIndex); // 撤销一笔交易事件 event...