一文读懂Uniswap,附Uniswap使用教程
一、加密货币交易形式当我们要进行加密货币交易时,使用最早也是目前使用最多的形式还是中心化交易所,在中心化交易所,我们首先需要注册,然后加密货币也需要存入到交易所,由交易所进行托管,如果要提现加密货币出来,也需要经过交易所审核同意。 虽然中心化交易所有诸多优势,例如交易速度较快、用户不需要管理私钥,降低了用户的使用门槛,但是它的弊端也是显而易见的,用户的加密货币由交易所托管,交易所是有跑路风险的。也确实发生过多起交易所跑路的事件,几乎每年都有发生。 那么,有没有更好的加密货币交易形式呢? 随着区块链技术的不断发展,加密货币交易形式也变得越来越多样化,我们不但可以使用中心化交易所进行交易,也可以使用去中心化交易所进行交易。 在中心化交易所进行交易时,不需要注册,只需要使用数字钱包连接去中心化交易所就可以进行加密货币的交易了,交易完成后,相应的加密货币会自动转入到用户的数字钱包中,用户的资产始终在自己的钱包中,并非像中心化交易所那样托管在交易所,所以,在去中心化交易所进行交易,安全性大大提高了。 目前,去中心化交易所主要有两种形式,一种是交易所撮合买方用户和卖方用户的订单,只不过操作过...
多签钱包Gnosis Safe使用教程
原作者:Gnosis Safe 团队 在过去的 4 年里,多重签名钱包 Gnosis Safe 的发展已经到达了全新的高度。它已经成为 Web3 的关键基础设施,为 DAO、机构、项目和个人保护数字资产。仅在以太坊主网上,Gnosis Safe 用户就管理着价值超过640 亿美元的资产,并且所有这些都是自我保管的!什么是多重签名?Gnosis Safe 的基础知识大多数以太坊用户习惯于使用单一密钥钱包(例如:MetaMask),通常称为外部账户(EOA)。这些帐户使用私钥进行保护,私钥可以转换为用户的 12 个单词的"助记词"。如果该私钥以任何方式被泄露,则资金可能会被盗。 如果您的企业由多于 1 个人组成,则外部帐户不是管理加密业务资金的安全方式。如果员工道德低劣或对于私钥不够小心,资金将永远丢失。即使您的企业只由您自己组成,我认为这仍然是一种糟糕的资金管理方式。那么,更好的解决方案是什么? 使用多重签名。Gnosis Safe 是一个运行在以太坊上的智能合约钱包,需要最少数量的人在交易发生之前批准,交易才会发生(M-of-N)。例如,如果您的企业中有 3 个主要利益相关者,则...
零知识证明——zk-stark数学入门
原文:CYC Labs咕咕 STARK的出现是为了解决计算完整性(CI)的问题。CI是商业的基本属性,有了CI我们才能信任银行账单和账户余额。文章讨论了无需可区块链中在无信任的情况下完成CI。 在旧世界的金融系统中,会有机制激励他们诚信的给社会服务,还有一个变体,就是可信执行环境(TEE)。比如Intel生产SGX芯片,Intel是一个可信的硬件制造商,所以现在的CI是基于对硬件和它的制造商的信任,并且假设不可能在这样的物理设备中提取密钥。在新世界中,即区块链,提供了一种更加直接的方式实现CI,“dont trust, verify” ,就是直接验证,只需要一个节点,只需要它设置了标准计算,比如一个联网的笔记本电脑就可以给所有交易提供完整性验证。但是这也直接导致两个挑战,隐私和可扩展。所以这就引出了证明系统。 证明系统开始于1985年提出的交互证明(interactive proof),通过prover和verifier两个实体,发送信息进行多轮交互,利用随机性产生零知识证明,验证者最后会输出一个决策来接受或者拒绝这个新状态。当状态A更新到B,证明系统解决了CI时,就会有可靠性(...
Buidling Web3.
一文读懂Uniswap,附Uniswap使用教程
一、加密货币交易形式当我们要进行加密货币交易时,使用最早也是目前使用最多的形式还是中心化交易所,在中心化交易所,我们首先需要注册,然后加密货币也需要存入到交易所,由交易所进行托管,如果要提现加密货币出来,也需要经过交易所审核同意。 虽然中心化交易所有诸多优势,例如交易速度较快、用户不需要管理私钥,降低了用户的使用门槛,但是它的弊端也是显而易见的,用户的加密货币由交易所托管,交易所是有跑路风险的。也确实发生过多起交易所跑路的事件,几乎每年都有发生。 那么,有没有更好的加密货币交易形式呢? 随着区块链技术的不断发展,加密货币交易形式也变得越来越多样化,我们不但可以使用中心化交易所进行交易,也可以使用去中心化交易所进行交易。 在中心化交易所进行交易时,不需要注册,只需要使用数字钱包连接去中心化交易所就可以进行加密货币的交易了,交易完成后,相应的加密货币会自动转入到用户的数字钱包中,用户的资产始终在自己的钱包中,并非像中心化交易所那样托管在交易所,所以,在去中心化交易所进行交易,安全性大大提高了。 目前,去中心化交易所主要有两种形式,一种是交易所撮合买方用户和卖方用户的订单,只不过操作过...
多签钱包Gnosis Safe使用教程
原作者:Gnosis Safe 团队 在过去的 4 年里,多重签名钱包 Gnosis Safe 的发展已经到达了全新的高度。它已经成为 Web3 的关键基础设施,为 DAO、机构、项目和个人保护数字资产。仅在以太坊主网上,Gnosis Safe 用户就管理着价值超过640 亿美元的资产,并且所有这些都是自我保管的!什么是多重签名?Gnosis Safe 的基础知识大多数以太坊用户习惯于使用单一密钥钱包(例如:MetaMask),通常称为外部账户(EOA)。这些帐户使用私钥进行保护,私钥可以转换为用户的 12 个单词的"助记词"。如果该私钥以任何方式被泄露,则资金可能会被盗。 如果您的企业由多于 1 个人组成,则外部帐户不是管理加密业务资金的安全方式。如果员工道德低劣或对于私钥不够小心,资金将永远丢失。即使您的企业只由您自己组成,我认为这仍然是一种糟糕的资金管理方式。那么,更好的解决方案是什么? 使用多重签名。Gnosis Safe 是一个运行在以太坊上的智能合约钱包,需要最少数量的人在交易发生之前批准,交易才会发生(M-of-N)。例如,如果您的企业中有 3 个主要利益相关者,则...
零知识证明——zk-stark数学入门
原文:CYC Labs咕咕 STARK的出现是为了解决计算完整性(CI)的问题。CI是商业的基本属性,有了CI我们才能信任银行账单和账户余额。文章讨论了无需可区块链中在无信任的情况下完成CI。 在旧世界的金融系统中,会有机制激励他们诚信的给社会服务,还有一个变体,就是可信执行环境(TEE)。比如Intel生产SGX芯片,Intel是一个可信的硬件制造商,所以现在的CI是基于对硬件和它的制造商的信任,并且假设不可能在这样的物理设备中提取密钥。在新世界中,即区块链,提供了一种更加直接的方式实现CI,“dont trust, verify” ,就是直接验证,只需要一个节点,只需要它设置了标准计算,比如一个联网的笔记本电脑就可以给所有交易提供完整性验证。但是这也直接导致两个挑战,隐私和可扩展。所以这就引出了证明系统。 证明系统开始于1985年提出的交互证明(interactive proof),通过prover和verifier两个实体,发送信息进行多轮交互,利用随机性产生零知识证明,验证者最后会输出一个决策来接受或者拒绝这个新状态。当状态A更新到B,证明系统解决了CI时,就会有可靠性(...
Buidling Web3.

Subscribe to DK

Subscribe to DK
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
比特币交易涉及到很多密码学知识:公钥、私钥、哈希、对称加密、非对称加密、签名等等。那么哪些是需要用户认真保管不能对外泄露的,那些是需要用户公开的呢?先从钱包地址的生成说起。
首先使用随机数发生器生成一个『私钥』。一般来说这是一个256bits的数,拥有了这串数字就可以对相应『钱包地址』中的比特币进行操作,所以必须被安全地保存起来。
『私钥』经过SECP256K1算法处理生成了『公钥』。SECP256K1是一种椭圆曲线算法,通过一个已知『私钥』时可以算得『公钥』,而『公钥』已知时却无法反向计算出『私钥』。这是保障比特币安全的算法基础。
同SHA256一样,RIPEMD160也是一种Hash算法,由『公钥』可以计算得到『公钥哈希』,而反过来是行不通的。
将一个字节的地址版本号连接到『公钥哈希』头部(对于比特币网络的pubkey地址,这一字节为“0”),然后对其进行两次SHA256运算,将结果的前4字节作为『公钥哈希』的校验值,连接在其尾部。
将上一步结果使用BASE58进行编码(比特币定制版本),就得到了『钱包地址』。 比如, 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
『私钥』『公钥』『钱包地址』间的关系 在上述的五个步骤里只有“BASE58编码”有相应的可逆算法(“BASE58解码”),其他算法都是不可逆的,所以这些数据之间的关系可以表示为: 图片: https://uploader.shimo.im/f/OUimtfWC9sfK2ko9.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NTIyNjY2NTcsImZpbGVHVUlEIjoiOFlweFF0cHc2eFlLcXFRUSIsImlhdCI6MTY1MjI2NjM1NywidXNlcklkIjoxNTQ3ODc2MH0.IipTtrVLfL2WyHi1_MmJwvvT1_YNGSrOegwmx1T47dQ 可以看到: 通过『私钥』可以得到上述计算过程中所有的值。 『公钥哈希』和『钱包地址』可以通过互逆运算进行转换,所以它们是等价的。
使用『私钥』对交易进行签名 比特币钱包间的转账是通过交易(Transaction)实现的。交易数据是由转出钱包『私钥』的所有者生成,也就是说有了『私钥』就可以花费该钱包的比特币余额。生成交易的过程如下: 图片: https://uploader.shimo.im/f/3LI6Fn3kOxGpOsXX.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NTIyNjY2NTcsImZpbGVHVUlEIjoiOFlweFF0cHc2eFlLcXFRUSIsImlhdCI6MTY1MjI2NjM1NywidXNlcklkIjoxNTQ3ODc2MH0.IipTtrVLfL2WyHi1_MmJwvvT1_YNGSrOegwmx1T47dQ
交易的原始数据包括“转账数额”和“转入钱包地址”,但是仅有这些是不够的,因为无法证明交易的生成者对“转出钱包地址”余额有动用的权利。所以需要用『私钥』对原始数据进行签名。
生成“转出钱包公钥”,这一过程与生成『钱包地址』的第2步是一样的。
将“转出签名”和“转出公钥”添加到原始交易数据中,生成了正式的交易数据,这样它就可以被广播到比特币网络进行转账了。
使用『公钥』对签名进行验证
图片: https://uploader.shimo.im/f/6b8oN1IOsENzKUcO.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NTIyNjY2NTcsImZpbGVHVUlEIjoiOFlweFF0cHc2eFlLcXFRUSIsImlhdCI6MTY1MjI2NjM1NywidXNlcklkIjoxNTQ3ODc2MH0.IipTtrVLfL2WyHi1_MmJwvvT1_YNGSrOegwmx1T47dQ 交易数据被广播到比特币网络后,节点会对这个交易数据进行检验,其中就包括对签名的校验。如果校验正确,那么这笔余额就成功地从“转出钱包”转移到“转入钱包”了。
小结 如果一个『钱包地址』从未曾发送余额到其他『钱包地址』,那么它的『公钥』是不会暴露在比特币网络上的。而公钥生成算法(SECP256K1)是不可逆的,即使『公钥』暴露,也很难对『私钥』的安全性造成影响(难易取决于『私钥』的生成算法)。 『私钥』用来生成『公钥』和『钱包地址』,也用来对交易进行签名。拥有了『私钥』就是拥有了对这个钱包余额的一切操作权力。所以,保护『私钥』是所有比特币钱包应用最基本也是最重要的功能。
注 本文仅讨论标准P2PKH交易方式,P2SH不在讨论范围内。 历史上发生过校验错误的交易被打入到blockchain中的事情,这种交易中的比特币永远地消失在Cyberspace中了。
比特币交易涉及到很多密码学知识:公钥、私钥、哈希、对称加密、非对称加密、签名等等。那么哪些是需要用户认真保管不能对外泄露的,那些是需要用户公开的呢?先从钱包地址的生成说起。
首先使用随机数发生器生成一个『私钥』。一般来说这是一个256bits的数,拥有了这串数字就可以对相应『钱包地址』中的比特币进行操作,所以必须被安全地保存起来。
『私钥』经过SECP256K1算法处理生成了『公钥』。SECP256K1是一种椭圆曲线算法,通过一个已知『私钥』时可以算得『公钥』,而『公钥』已知时却无法反向计算出『私钥』。这是保障比特币安全的算法基础。
同SHA256一样,RIPEMD160也是一种Hash算法,由『公钥』可以计算得到『公钥哈希』,而反过来是行不通的。
将一个字节的地址版本号连接到『公钥哈希』头部(对于比特币网络的pubkey地址,这一字节为“0”),然后对其进行两次SHA256运算,将结果的前4字节作为『公钥哈希』的校验值,连接在其尾部。
将上一步结果使用BASE58进行编码(比特币定制版本),就得到了『钱包地址』。 比如, 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
『私钥』『公钥』『钱包地址』间的关系 在上述的五个步骤里只有“BASE58编码”有相应的可逆算法(“BASE58解码”),其他算法都是不可逆的,所以这些数据之间的关系可以表示为: 图片: https://uploader.shimo.im/f/OUimtfWC9sfK2ko9.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NTIyNjY2NTcsImZpbGVHVUlEIjoiOFlweFF0cHc2eFlLcXFRUSIsImlhdCI6MTY1MjI2NjM1NywidXNlcklkIjoxNTQ3ODc2MH0.IipTtrVLfL2WyHi1_MmJwvvT1_YNGSrOegwmx1T47dQ 可以看到: 通过『私钥』可以得到上述计算过程中所有的值。 『公钥哈希』和『钱包地址』可以通过互逆运算进行转换,所以它们是等价的。
使用『私钥』对交易进行签名 比特币钱包间的转账是通过交易(Transaction)实现的。交易数据是由转出钱包『私钥』的所有者生成,也就是说有了『私钥』就可以花费该钱包的比特币余额。生成交易的过程如下: 图片: https://uploader.shimo.im/f/3LI6Fn3kOxGpOsXX.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NTIyNjY2NTcsImZpbGVHVUlEIjoiOFlweFF0cHc2eFlLcXFRUSIsImlhdCI6MTY1MjI2NjM1NywidXNlcklkIjoxNTQ3ODc2MH0.IipTtrVLfL2WyHi1_MmJwvvT1_YNGSrOegwmx1T47dQ
交易的原始数据包括“转账数额”和“转入钱包地址”,但是仅有这些是不够的,因为无法证明交易的生成者对“转出钱包地址”余额有动用的权利。所以需要用『私钥』对原始数据进行签名。
生成“转出钱包公钥”,这一过程与生成『钱包地址』的第2步是一样的。
将“转出签名”和“转出公钥”添加到原始交易数据中,生成了正式的交易数据,这样它就可以被广播到比特币网络进行转账了。
使用『公钥』对签名进行验证
图片: https://uploader.shimo.im/f/6b8oN1IOsENzKUcO.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NTIyNjY2NTcsImZpbGVHVUlEIjoiOFlweFF0cHc2eFlLcXFRUSIsImlhdCI6MTY1MjI2NjM1NywidXNlcklkIjoxNTQ3ODc2MH0.IipTtrVLfL2WyHi1_MmJwvvT1_YNGSrOegwmx1T47dQ 交易数据被广播到比特币网络后,节点会对这个交易数据进行检验,其中就包括对签名的校验。如果校验正确,那么这笔余额就成功地从“转出钱包”转移到“转入钱包”了。
小结 如果一个『钱包地址』从未曾发送余额到其他『钱包地址』,那么它的『公钥』是不会暴露在比特币网络上的。而公钥生成算法(SECP256K1)是不可逆的,即使『公钥』暴露,也很难对『私钥』的安全性造成影响(难易取决于『私钥』的生成算法)。 『私钥』用来生成『公钥』和『钱包地址』,也用来对交易进行签名。拥有了『私钥』就是拥有了对这个钱包余额的一切操作权力。所以,保护『私钥』是所有比特币钱包应用最基本也是最重要的功能。
注 本文仅讨论标准P2PKH交易方式,P2SH不在讨论范围内。 历史上发生过校验错误的交易被打入到blockchain中的事情,这种交易中的比特币永远地消失在Cyberspace中了。
No activity yet