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时,就会有可靠性(...
一文读懂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
NFT作为当前加密领域风头正盛的宠儿,成为了吸引普罗大众踏入加密圈的重要入口。NFT市场的参与人数和交易量也在不断扩大,各种新颖的应用层出不穷。但无论NFT的玩法和形式如何变化,一定都离不开一个最重要的组成部分:Metadata。
Metadata通常直译为“元数据”,本质上是NFT内容的描述数据。
通常一份Metadata长这样:
// 从Amadeus工具中导出的Metadata
{
"name":"test #0",
"description":"Your NFT collection!",
"image":"/0.png",
"attributes":[
{ "trait_type":"eye", "value":"blue" },
{ "trait_type":"body", "value":"thin" },
{ "trait_type":"arm", "value":"long" }
]
}
注: 上面所展示的Metadata实际上是Opensea所支持的格式,是Opensea所制定的规范。如果你的项目想要在Opensea上进行展示,就一定要以这样的格式出现。 一份Metadata中包含几个关键部分:
name:NFT的名称
description:NFT的描述语句
image:指向NFT最终展示Image的链接
attributes:NFT所包含的特征
以上几个关键部分与Opensea上内容的对应关系如下图所示:

也就是说,NFT的Metadata存储着用户在Opensea上所看到的内容。
我们都知道非同质化是NFT最重要的属性,就像那句“世界上没有两片相同的树叶”,而NFT的非同质化如何体现呢?仅仅是NFT的Token ID不同吗?
绝大多数NFT系列是由符合ERC-721标准或ERC-1155标准的合约所创建的,ERC-721和ERC-1155提供了Metadata的拓展选项,能让合约拥有者去诠释这份NFT资产的名称和数据内容。
而NFT的非同质化也更多的被Metadata中迥然不同的数据形式和内容所体现。
当我们在Opensea上查看自己最喜爱的NFT时,页面上通常展示出丰富的metadata。Opensea是如何获取这些信息的呢?
如果你曾经了解过ERC721和ERC1155标准,你就会发现,这两项标准中其实并没有对Metadata做出强制的规定。也就是说,如何将NFT与Metadata绑定实际上是一个非常自由的事情。
但显然,完全的自由不是一个逐渐走向统一规范市场的常态。
后续逐渐出现了ERC-721Metadata和ERC-1155Metadata规范,他们定义了NFT与Metadata绑定的标准方式(比如openzeppelin),后续的NFT项目在编写Metadata也有章可循。Opensea这样的Marketplace也无需苦苦思考如何适配市场海量的Metadata格式。
ERC-721Metadata和ERC-1155Metadata规范是对ERC-721和ERC-1155的一个扩展,他们总结了一套标准方法和必要的变量。例如,ERC-721Metadata定义了一个外部方法:tokenURI。该方法的具体功能是:当用户调用这一方法,给他传递要查看的token Id,就可以得到对应的Metadata。
上一部分中说到Opensea需要读取某个NFT项目背后智能合约的tokenURI方法(ERC-1155标准为uri方法)来获取某个NFT对应的Metadata。那么Opensea能够理解的Metadata有哪些呢?
链接
Opensea可以解析链接,包括HTTP/HTTPS/IPFS/AR。需要注意的是,首先链接需要通过最基本的GET请求获取内容。也就是说,将这一链接粘贴到HTTP浏览器/IPFS浏览器中可以获取到其中的内容,而不无需额外操作。
Json文档
直接返回内容,不需要Opensea做二次内容寻找。
上述两种方式各有优劣:
对于链接的方案,优势在于可以减少链上存储的数据量,最直观的表现就是节省了部署时候的gas费用。但由于Metadata的实际内容上是由项目方的服务器所控制的,因此可以随意修改,用户权益依旧没有得到去中心化的保障。折中的解决方案就是使用IPFS链接,由于IPFS的不可修改性从而保证Metadata的不可修改。
Json文档的方案优势在于所有的Metadata都以明文的形式写在合约中,用户可以直接读取到某个NFT的Metadata而不需要二次跳转。同时由于智能合约代码量的增加,部署价格也会略贵于链接的方案。并且对于以太坊,由于存在着代码部署大小的限制(编译产物单个文件最大不超过24.576KB),太多的明文写在合约中会占用过多空间,导致放不下更多功能。
总之,如果某NFT系列想要在Opensea等dapp正确读取并展示其metadata,需要遵照相应dapp的规范格式,具体细节请查看其官方文档。
在Metadata中,name和description是对NFT的介绍信息,attributes更多的承载了检索的功能。而用户最关心的,也是最直观表现NFT的是其中的image,因此在这里特别讲解一些常见的Image表现方式。
在第一部分的Opensea Metadata格式中我们可以看到,image是其中的一个字段。和Metadata一样,也有两大类表现方式:
图片链接。同样分为服务器链接和IPFS链接两种。链接所指向的内容应当是图像本身。
图像本身:这里就涉及到了一些互联网中图像的绘制方式。可以以svg格式描述图像(Loot采用的方式),也可以用base64编码描述图像。具体的方式大家感兴趣可以自行了解一下~
优劣也与Metadata基本相同,这里就不再赘述。
最佳实践的目标是实现一个不需要中心化服务器的NFT项目,因此Image和Metadata都选择IPFS存储。
前期准备:
NFT集合的图像,文件名由0.png/jpg ~ n.png/jpg
未填入image字段的metadata文档, 文件名由0~n
已完成部署的智能合约
注册好Pinata账户
第一步:将图像上传至IPFS。 进入Pinata,文件上传,将NFT集合的所有图像放置在一个文件夹内,进行上传。上传完毕后,你将可以在Pinata的已上传文件列表中看到刚刚上传的文件夹。将第二列CID中对应的值复制下来,待后续使用。 第二步:为Metadata文档填入image字段。 补全每个Metadata文档。例如对于0号Metadata文档:
{
"name":"test #0",
"description":"Your NFT collection!",
"image":"ipfs://[CID]/0.png",
"attributes":[
{
"trait_type":"eye",
"value":"blue"
},
{
"trait_type":"body",
"value":"thin"
},
{
"trait_type":"arm",
"value":"long"
}
]
}
将第一步中得到的CID填入上述文档中[CID]的位置即可。
第三步:将Metadata文件夹上传至IPFS。
进入Pinata,文件上传,将NFT集合的所有Metadata放置在一个文件夹内,与id一一对应,进行上传。上传完毕后,你将可以在Pinata的已上传文件列表中看到刚刚上传的Metadata文件夹。将第二列CID中对应的值复制下来,待后续使用。
第四步:设置合约baseURI。
在Etherscan上访问已完成部署的合约,调用setBaseURI方法,传入"ipfs://[CID]/"。将第三步得到的Metadata CID填入前面的[CID]即可。
至此,Metadata的最佳实践就完成啦,如果想要更换Collection的Metadata,可以再进行一次上述四个步骤。
在我的视角来看,NFT就像是元宇宙中的物体,每一个物体都有自己的特点,都是不可取代的。Metadata则是这个物品的描述信息,记录着这个物品所包含的内容。Image则是物体真实的模样。 目前Opensea所支持的Metadata内容还是有限的,例如无法支持多个图片的组合和叠加等。NFT还有很大的提升与变化空间。
NFT作为当前加密领域风头正盛的宠儿,成为了吸引普罗大众踏入加密圈的重要入口。NFT市场的参与人数和交易量也在不断扩大,各种新颖的应用层出不穷。但无论NFT的玩法和形式如何变化,一定都离不开一个最重要的组成部分:Metadata。
Metadata通常直译为“元数据”,本质上是NFT内容的描述数据。
通常一份Metadata长这样:
// 从Amadeus工具中导出的Metadata
{
"name":"test #0",
"description":"Your NFT collection!",
"image":"/0.png",
"attributes":[
{ "trait_type":"eye", "value":"blue" },
{ "trait_type":"body", "value":"thin" },
{ "trait_type":"arm", "value":"long" }
]
}
注: 上面所展示的Metadata实际上是Opensea所支持的格式,是Opensea所制定的规范。如果你的项目想要在Opensea上进行展示,就一定要以这样的格式出现。 一份Metadata中包含几个关键部分:
name:NFT的名称
description:NFT的描述语句
image:指向NFT最终展示Image的链接
attributes:NFT所包含的特征
以上几个关键部分与Opensea上内容的对应关系如下图所示:

也就是说,NFT的Metadata存储着用户在Opensea上所看到的内容。
我们都知道非同质化是NFT最重要的属性,就像那句“世界上没有两片相同的树叶”,而NFT的非同质化如何体现呢?仅仅是NFT的Token ID不同吗?
绝大多数NFT系列是由符合ERC-721标准或ERC-1155标准的合约所创建的,ERC-721和ERC-1155提供了Metadata的拓展选项,能让合约拥有者去诠释这份NFT资产的名称和数据内容。
而NFT的非同质化也更多的被Metadata中迥然不同的数据形式和内容所体现。
当我们在Opensea上查看自己最喜爱的NFT时,页面上通常展示出丰富的metadata。Opensea是如何获取这些信息的呢?
如果你曾经了解过ERC721和ERC1155标准,你就会发现,这两项标准中其实并没有对Metadata做出强制的规定。也就是说,如何将NFT与Metadata绑定实际上是一个非常自由的事情。
但显然,完全的自由不是一个逐渐走向统一规范市场的常态。
后续逐渐出现了ERC-721Metadata和ERC-1155Metadata规范,他们定义了NFT与Metadata绑定的标准方式(比如openzeppelin),后续的NFT项目在编写Metadata也有章可循。Opensea这样的Marketplace也无需苦苦思考如何适配市场海量的Metadata格式。
ERC-721Metadata和ERC-1155Metadata规范是对ERC-721和ERC-1155的一个扩展,他们总结了一套标准方法和必要的变量。例如,ERC-721Metadata定义了一个外部方法:tokenURI。该方法的具体功能是:当用户调用这一方法,给他传递要查看的token Id,就可以得到对应的Metadata。
上一部分中说到Opensea需要读取某个NFT项目背后智能合约的tokenURI方法(ERC-1155标准为uri方法)来获取某个NFT对应的Metadata。那么Opensea能够理解的Metadata有哪些呢?
链接
Opensea可以解析链接,包括HTTP/HTTPS/IPFS/AR。需要注意的是,首先链接需要通过最基本的GET请求获取内容。也就是说,将这一链接粘贴到HTTP浏览器/IPFS浏览器中可以获取到其中的内容,而不无需额外操作。
Json文档
直接返回内容,不需要Opensea做二次内容寻找。
上述两种方式各有优劣:
对于链接的方案,优势在于可以减少链上存储的数据量,最直观的表现就是节省了部署时候的gas费用。但由于Metadata的实际内容上是由项目方的服务器所控制的,因此可以随意修改,用户权益依旧没有得到去中心化的保障。折中的解决方案就是使用IPFS链接,由于IPFS的不可修改性从而保证Metadata的不可修改。
Json文档的方案优势在于所有的Metadata都以明文的形式写在合约中,用户可以直接读取到某个NFT的Metadata而不需要二次跳转。同时由于智能合约代码量的增加,部署价格也会略贵于链接的方案。并且对于以太坊,由于存在着代码部署大小的限制(编译产物单个文件最大不超过24.576KB),太多的明文写在合约中会占用过多空间,导致放不下更多功能。
总之,如果某NFT系列想要在Opensea等dapp正确读取并展示其metadata,需要遵照相应dapp的规范格式,具体细节请查看其官方文档。
在Metadata中,name和description是对NFT的介绍信息,attributes更多的承载了检索的功能。而用户最关心的,也是最直观表现NFT的是其中的image,因此在这里特别讲解一些常见的Image表现方式。
在第一部分的Opensea Metadata格式中我们可以看到,image是其中的一个字段。和Metadata一样,也有两大类表现方式:
图片链接。同样分为服务器链接和IPFS链接两种。链接所指向的内容应当是图像本身。
图像本身:这里就涉及到了一些互联网中图像的绘制方式。可以以svg格式描述图像(Loot采用的方式),也可以用base64编码描述图像。具体的方式大家感兴趣可以自行了解一下~
优劣也与Metadata基本相同,这里就不再赘述。
最佳实践的目标是实现一个不需要中心化服务器的NFT项目,因此Image和Metadata都选择IPFS存储。
前期准备:
NFT集合的图像,文件名由0.png/jpg ~ n.png/jpg
未填入image字段的metadata文档, 文件名由0~n
已完成部署的智能合约
注册好Pinata账户
第一步:将图像上传至IPFS。 进入Pinata,文件上传,将NFT集合的所有图像放置在一个文件夹内,进行上传。上传完毕后,你将可以在Pinata的已上传文件列表中看到刚刚上传的文件夹。将第二列CID中对应的值复制下来,待后续使用。 第二步:为Metadata文档填入image字段。 补全每个Metadata文档。例如对于0号Metadata文档:
{
"name":"test #0",
"description":"Your NFT collection!",
"image":"ipfs://[CID]/0.png",
"attributes":[
{
"trait_type":"eye",
"value":"blue"
},
{
"trait_type":"body",
"value":"thin"
},
{
"trait_type":"arm",
"value":"long"
}
]
}
将第一步中得到的CID填入上述文档中[CID]的位置即可。
第三步:将Metadata文件夹上传至IPFS。
进入Pinata,文件上传,将NFT集合的所有Metadata放置在一个文件夹内,与id一一对应,进行上传。上传完毕后,你将可以在Pinata的已上传文件列表中看到刚刚上传的Metadata文件夹。将第二列CID中对应的值复制下来,待后续使用。
第四步:设置合约baseURI。
在Etherscan上访问已完成部署的合约,调用setBaseURI方法,传入"ipfs://[CID]/"。将第三步得到的Metadata CID填入前面的[CID]即可。
至此,Metadata的最佳实践就完成啦,如果想要更换Collection的Metadata,可以再进行一次上述四个步骤。
在我的视角来看,NFT就像是元宇宙中的物体,每一个物体都有自己的特点,都是不可取代的。Metadata则是这个物品的描述信息,记录着这个物品所包含的内容。Image则是物体真实的模样。 目前Opensea所支持的Metadata内容还是有限的,例如无法支持多个图片的组合和叠加等。NFT还有很大的提升与变化空间。
No activity yet