介绍 ERC721A:一种改进的ERC721实现
本文翻译自: https://www.azuki.com/erc721a简介ERC721A 是 IERC721 的一种实现,在单笔交易中 mint 多个 NFT 可显著节省 gas。Azuki 合约将使 mint 多个 NFT 的成本与 mint 单个 NFT 的成本基本相同。我们与外部安全顾问 (Caribou) 合作,以确保我们的方法是可行的。我们鼓励更广泛的社区采用这种实施方式来为他们的用户节省 gas 成本。起因几个月来,以太坊的 Gas 价格一直居高不下,开发社区需要适应。当流行的 NFT 项目开始出现时,gas 价格飙升,导致整个生态系统支付数百万的 gas 费用来进行交易。在 Azuki,我们正在与我们的社区一起为 Metaverse 建立一个品牌。开发团队的重点是优化我们的合约,并使我们的社区在 mint 时尽可能少地花费 gas 费用。 我们没有使用 OpenZeppelin 流行的 IERC721 和 IERC721Enumerable 默认实现,而是编写了我们的版本(在本文的其余部分,我们将其称为 ERC721A)并很高兴地宣布,Azuki 合约的确能够实现...
介绍 ERC721A:一种改进的ERC721实现
本文翻译自: https://www.azuki.com/erc721a简介ERC721A 是 IERC721 的一种实现,在单笔交易中 mint 多个 NFT 可显著节省 gas。Azuki 合约将使 mint 多个 NFT 的成本与 mint 单个 NFT 的成本基本相同。我们与外部安全顾问 (Caribou) 合作,以确保我们的方法是可行的。我们鼓励更广泛的社区采用这种实施方式来为他们的用户节省 gas 成本。起因几个月来,以太坊的 Gas 价格一直居高不下,开发社区需要适应。当流行的 NFT 项目开始出现时,gas 价格飙升,导致整个生态系统支付数百万的 gas 费用来进行交易。在 Azuki,我们正在与我们的社区一起为 Metaverse 建立一个品牌。开发团队的重点是优化我们的合约,并使我们的社区在 mint 时尽可能少地花费 gas 费用。 我们没有使用 OpenZeppelin 流行的 IERC721 和 IERC721Enumerable 默认实现,而是编写了我们的版本(在本文的其余部分,我们将其称为 ERC721A)并很高兴地宣布,Azuki 合约的确能够实现...
WASM 输入与输出
WASM 简介WASM(WebAssembly)是一种用于堆栈式虚拟机的二进制指令格式。它是是一种文件格式标准,不是特定的虚拟机实现,因此有各种 compiler、interpreter 以及 runtime,如wastime、Wasmer、V8、 Lucet、WAMR、wasm3。 WASM 在设计之初,考虑了以下几点:🔗高效和快速:体积小,加载速度快。可以流式加载,边下载边初始化,减少时间和内存占用。理论上可以达到原生的运行速度。安全:WASM 描述了一个内存安全的沙箱执行环境,甚至可以在现有的 JavaScript 虚拟机中实现。开放可调试:可以翻译为可读的文本格式.wat(可以理解为 WASM 平台的汇编语言),配合 source map 方便调试。Web 标准:模块能够传入和传出 JavaScript 上下文,并通过 JavaScript 访问 Web API 来访问浏览器功能。同时也支持非浏览器环境中运行。但也有以下限制:基础数据类型只有 i32、i64、f32、f64。高级数据结构(如:字符串)每种语言需要自己实现。🔗只能进行同步计算,不支持异步函数。对于 Go...
WASM 输入与输出
WASM 简介WASM(WebAssembly)是一种用于堆栈式虚拟机的二进制指令格式。它是是一种文件格式标准,不是特定的虚拟机实现,因此有各种 compiler、interpreter 以及 runtime,如wastime、Wasmer、V8、 Lucet、WAMR、wasm3。 WASM 在设计之初,考虑了以下几点:🔗高效和快速:体积小,加载速度快。可以流式加载,边下载边初始化,减少时间和内存占用。理论上可以达到原生的运行速度。安全:WASM 描述了一个内存安全的沙箱执行环境,甚至可以在现有的 JavaScript 虚拟机中实现。开放可调试:可以翻译为可读的文本格式.wat(可以理解为 WASM 平台的汇编语言),配合 source map 方便调试。Web 标准:模块能够传入和传出 JavaScript 上下文,并通过 JavaScript 访问 Web API 来访问浏览器功能。同时也支持非浏览器环境中运行。但也有以下限制:基础数据类型只有 i32、i64、f32、f64。高级数据结构(如:字符串)每种语言需要自己实现。🔗只能进行同步计算,不支持异步函数。对于 Go...
用过的显示器
用过的显示器DELL P2415Q23.5 寸 4K IPS 屏 ,2015-08 购买,3000 元。 当时 4K 显示器刚开始普及,可选的型号不多。还专门为这个显示器配了一个台式机,i3-2130 处理器,R9 Nano 显卡,可以畅玩 4K 全高特效 DotA2。 后来公司采购显示器我就推荐的这款型号,办公用非常不错。 这台显示器后来卖给公司了。ELSA E32B700BD31.5 寸 4K VA 屏 ,2017-06 购买,2199 元。 是个杂牌显示器,但性价比非常高,VA 屏色彩艳丽。当时合租的室友看到后也买了一台。 这台显示器卖给同事了,但他使用一年后就坏了。LM315WR1 SSA1 B131.5 寸 4K IPS 屏 ,2018-03 购买,显示屏+驱动板 2180 元。 这是 LG 32UD99 同款面板,不带外壳,使用一块亚克力背板链接屏幕与驱动板。 在 macOS 下驱动有点问题,无法输出 4K,需要在 /Library/Displays/Contents/Resources/Overrides/ 目录下放一个配置文件才能正常使用。 这台显示器也卖给同事了...
用过的显示器
用过的显示器DELL P2415Q23.5 寸 4K IPS 屏 ,2015-08 购买,3000 元。 当时 4K 显示器刚开始普及,可选的型号不多。还专门为这个显示器配了一个台式机,i3-2130 处理器,R9 Nano 显卡,可以畅玩 4K 全高特效 DotA2。 后来公司采购显示器我就推荐的这款型号,办公用非常不错。 这台显示器后来卖给公司了。ELSA E32B700BD31.5 寸 4K VA 屏 ,2017-06 购买,2199 元。 是个杂牌显示器,但性价比非常高,VA 屏色彩艳丽。当时合租的室友看到后也买了一台。 这台显示器卖给同事了,但他使用一年后就坏了。LM315WR1 SSA1 B131.5 寸 4K IPS 屏 ,2018-03 购买,显示屏+驱动板 2180 元。 这是 LG 32UD99 同款面板,不带外壳,使用一块亚克力背板链接屏幕与驱动板。 在 macOS 下驱动有点问题,无法输出 4K,需要在 /Library/Displays/Contents/Resources/Overrides/ 目录下放一个配置文件才能正常使用。 这台显示器也卖给同事了...
使用 React 后端渲染 SVG 图片
这篇文章教你使用 Figma 作为设计工具,使用 React 作为模版渲染工具,使用 Next.js 作为 SSR,渲染出一个 SVG 图片。最近参与制作了即刻里的一个小功能“我的持仓”。其前端主要分为两部分:一部分是即刻个人主页下的“小卡片”,另一部分是点击小卡片后跳转到的网页。我们主要来讲讲这个小卡片是如何实现的。小卡片实际上是一张 SVG 图片,放在整个卡片列表中的一个 <img /> 标签里为什么不以 SVG DOM 的方式渲染?这样做的话,卡片列表(上图黄框部分)和卡片内容(上图红框部分)代码要放在同一个项目中,“我的持仓”业务逻辑和即刻的业务逻辑就耦合了。为什么不用 PNG 图片?因为图片中含有文字,PNG 图片无法适配不同手机的不同字体。Figma 导出 SVG导出时注意不要勾选 Outline Text,该选项会把 text 变成 path,也就是把字体当作矢量图来画。但是在我们的渲染中需要 text 作为变量,因此不要勾选。React 渲染 SVGReact 本身就支持 SVG 渲染,把刚才导出的 svg 代码复制粘贴成为一个 React Componentex...
使用 React 后端渲染 SVG 图片
这篇文章教你使用 Figma 作为设计工具,使用 React 作为模版渲染工具,使用 Next.js 作为 SSR,渲染出一个 SVG 图片。最近参与制作了即刻里的一个小功能“我的持仓”。其前端主要分为两部分:一部分是即刻个人主页下的“小卡片”,另一部分是点击小卡片后跳转到的网页。我们主要来讲讲这个小卡片是如何实现的。小卡片实际上是一张 SVG 图片,放在整个卡片列表中的一个 <img /> 标签里为什么不以 SVG DOM 的方式渲染?这样做的话,卡片列表(上图黄框部分)和卡片内容(上图红框部分)代码要放在同一个项目中,“我的持仓”业务逻辑和即刻的业务逻辑就耦合了。为什么不用 PNG 图片?因为图片中含有文字,PNG 图片无法适配不同手机的不同字体。Figma 导出 SVG导出时注意不要勾选 Outline Text,该选项会把 text 变成 path,也就是把字体当作矢量图来画。但是在我们的渲染中需要 text 作为变量,因此不要勾选。React 渲染 SVGReact 本身就支持 SVG 渲染,把刚才导出的 svg 代码复制粘贴成为一个 React Componentex...