
Telegram Mini Apps电报小程序开发文档
2022年4月Telegram的MiniApp(之前为Web App,6.0版后改名为Mini App)上线,Mini Apps(简称 TMAs,中文名:小程序)很可能会变成一个类似于微信小程序的平台,使得Telegram 更接近一个“超级应用”。目前,电报小程序推出不久,版本还在快速迭代中,开发人员也较少,但电报庞大的用户群基础很可能会产生大量的小程序。 作为Web3的开发者,大多数应用都是前端和区块链直接交互,但电报bot只支持消息通过电报服务和bot所在的服务器进行交互,导致大量DAPP无法给到用户可靠的账户安全保障。电报小程序在电报应用中“嵌入”了Web前端应用,通过它与区块链和智能合约直接交互,将账户信息通过安全策略在本地进行保存,大幅度提高账户安全性。同时,将与区块链无关的业务逻辑通过bot与服务器进行交互,提高用户体验。 所以,Telegram+小程序+bot+智能合约的开发模式,可能会称为一种全新的Web3开发技术栈。事实上,从时间上看,电报小程序与TON链同时推出,也可能有这方面的用意。但是这种开发模式不仅仅适用于电报和TON链,更适用于用户量庞大的各种EVM链...

使用Session Key委托服务器安全的操作抽象账户
最近电报自动交易机器人和各种SocialFi很火,这些产品给用户带来了类似Web2的良好用户体验。但火爆的背后,也发生了多起安全事件。为此,很多新上线的平台开始使用更先进的账户安全技术来保护用户资产,比如@tomo_social使用了ERC-4337账户抽象技术,有些电报机器人采用了MPC钱包技术。 尽管账户抽象钱包(AA钱包)已经具备了零gas费(服务商代付gas费),多签,社交登录等强大功能,并大幅度提升用户体验,但是因为ERC-4337属于在现有以太坊共识基础上的补丁方案,与链交互签名时仍旧需要私钥,各种方案只是在私钥保存和签名环节采取各种安全措施。 所以,虽然很多代用户签名交互的电报机器人,SocialFi平台通过MPC钱包或AA钱包来保障客户的私钥安全,但实际上,因为最终还是要通过钱包主私钥来进行签名,本质上还是私钥的验证模式,所以仍旧有私钥泄露的风险。 今天看到AA钱包创新项目ZeroDev的Session Key(对话密钥)解决方案,可以让AA钱包授权生成一个或若干个Session Key(也是一种私钥),来受控的执行经授权的操作。这种授权模式有别于ERC-20或E...
关于使用合约批量铸造的原因分析与解决方案
Cirth.meme上线4天,各方面表现良好。但铸造代码中,发现存在使用合约来批量铸造的可能,这严重影响了公平铸造。 类似的交易记录见:https://etherscan.io/tx/0xa58e8039740892f59b25ec0e14ce63d3d5c62eba0b16cdcd61c65553d5c67874。原因社区提交上述交易后,经技术团队研究,复现了其操作,大概的方式为:写两个智能合约,一个为主控制合约,一个为铸造合约,在主控制合约中创建多个铸造合约,通过铸造合约伪造正常用户,去调用Cirth合约的mint方法。 下面是实现类似功能的智能合约源码:// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; import "@openzeppelin/contracts/proxy/Clones.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; interface IFERC721C { function mint(address to) exter...

Telegram Mini Apps电报小程序开发文档
2022年4月Telegram的MiniApp(之前为Web App,6.0版后改名为Mini App)上线,Mini Apps(简称 TMAs,中文名:小程序)很可能会变成一个类似于微信小程序的平台,使得Telegram 更接近一个“超级应用”。目前,电报小程序推出不久,版本还在快速迭代中,开发人员也较少,但电报庞大的用户群基础很可能会产生大量的小程序。 作为Web3的开发者,大多数应用都是前端和区块链直接交互,但电报bot只支持消息通过电报服务和bot所在的服务器进行交互,导致大量DAPP无法给到用户可靠的账户安全保障。电报小程序在电报应用中“嵌入”了Web前端应用,通过它与区块链和智能合约直接交互,将账户信息通过安全策略在本地进行保存,大幅度提高账户安全性。同时,将与区块链无关的业务逻辑通过bot与服务器进行交互,提高用户体验。 所以,Telegram+小程序+bot+智能合约的开发模式,可能会称为一种全新的Web3开发技术栈。事实上,从时间上看,电报小程序与TON链同时推出,也可能有这方面的用意。但是这种开发模式不仅仅适用于电报和TON链,更适用于用户量庞大的各种EVM链...

使用Session Key委托服务器安全的操作抽象账户
最近电报自动交易机器人和各种SocialFi很火,这些产品给用户带来了类似Web2的良好用户体验。但火爆的背后,也发生了多起安全事件。为此,很多新上线的平台开始使用更先进的账户安全技术来保护用户资产,比如@tomo_social使用了ERC-4337账户抽象技术,有些电报机器人采用了MPC钱包技术。 尽管账户抽象钱包(AA钱包)已经具备了零gas费(服务商代付gas费),多签,社交登录等强大功能,并大幅度提升用户体验,但是因为ERC-4337属于在现有以太坊共识基础上的补丁方案,与链交互签名时仍旧需要私钥,各种方案只是在私钥保存和签名环节采取各种安全措施。 所以,虽然很多代用户签名交互的电报机器人,SocialFi平台通过MPC钱包或AA钱包来保障客户的私钥安全,但实际上,因为最终还是要通过钱包主私钥来进行签名,本质上还是私钥的验证模式,所以仍旧有私钥泄露的风险。 今天看到AA钱包创新项目ZeroDev的Session Key(对话密钥)解决方案,可以让AA钱包授权生成一个或若干个Session Key(也是一种私钥),来受控的执行经授权的操作。这种授权模式有别于ERC-20或E...
关于使用合约批量铸造的原因分析与解决方案
Cirth.meme上线4天,各方面表现良好。但铸造代码中,发现存在使用合约来批量铸造的可能,这严重影响了公平铸造。 类似的交易记录见:https://etherscan.io/tx/0xa58e8039740892f59b25ec0e14ce63d3d5c62eba0b16cdcd61c65553d5c67874。原因社区提交上述交易后,经技术团队研究,复现了其操作,大概的方式为:写两个智能合约,一个为主控制合约,一个为铸造合约,在主控制合约中创建多个铸造合约,通过铸造合约伪造正常用户,去调用Cirth合约的mint方法。 下面是实现类似功能的智能合约源码:// SPDX-License-Identifier: MIT pragma solidity ^0.8.18; import "@openzeppelin/contracts/proxy/Clones.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; interface IFERC721C { function mint(address to) exter...

Subscribe to jackygu's blog

Subscribe to jackygu's blog
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
我们非常高兴地宣布,erc20.cash 上线了。这是一个更公平的的ERC20代币方案,我们将它命名为:Fair ERC-20,简称FERC20。
今年3月8日,BRC20代币在比特币链上通过Ordinals部署成功,在短短一两个月内吸引了大量关注和资金的参与。BRC20代币的成功得益于以下几个原因:
简洁的Ordinals协议使得BRC20发行方无法在代币上做过多的编程,避免了在以太坊合约中各种安全风险和一些自私的设计。
人人平等的铸币权。BRC20的发行方或项目团队,无法像在以太坊智能合约中通常做的那样,给自己或相关利益方预留一部分免费(低价)代币。在铸造BRC20时,所有人都站在同一起跑线上,即使发行方和团队也是如此。
比特币的UTXO机制和低性能,让很多具有速度优势的智能合约机器人无法在比特币网络上工作,从而防止了通过技术手段获得比正常参与者更大的优势以及由此造成的不公平。
上述原因使得BRC20对社区参与者来说,更公平,从而吸引了更多人参与。
但是,即使如此,有个非常有意思的现象是:大多数以太坊社区的成员尚未参与BRC20。
所以,我们想,是否能将BRC20的公平发售(Fairlaunch)精神通过智能合约在以太坊(及其他EVM链)上实现,让更多的社区参与?
FERC20就是这个想法的实验结果。
FERC20基于ERC20标准协议,所以具有BRC20不具备的特点,包括但不限于:
可以方便的在大众所熟悉的钱包内转账,不需要下载新的钱包软件;
可以在以太坊强大的DEFI生态中使用,包括DEX,借贷,多签等等;
FERC20代币无owner权限,即无主代币;
Tick字符数可升级;
没有预挖,代币总量从零开始挖,到达到硬顶为止;
高度去中心化,系统架构无服务器,包括搜索、查找等功能,全部在智能合约中进行;
不是BRC20代打平台,用户直接与合约交互;
在以太坊上实现BRC20,主要的难度在于如何在以太坊上实现比特币链上较为有效的对女巫和智能合约机器人的防范,以维护参与者的公平性。
为此,我们尝试了在ERC20标准合约基础上,添加了3组属性:
冷冻期: 当用户第一次铸币后,会进入冷冻期,在冷冻期内如果想继续铸币,需要向平台支付小费。每次额外的铸币,小费都会翻倍。如:在冷冻期内第一次铸币,将支付0.00025 ETH,第二次需要支付0.0005 ETH,第三次需要支付0.001 ETH。。。
需要注意的是,对于设置了冷冻期的FERC20,不能批量铸币(Rollup Mint)
持仓条件: 部署人可以设置持仓条件,用于防止女巫帐号大规模快速铸币。 持仓资产包括NFT和其他ERC20代币。
预售/众筹: 部署人可以设置代币的预售/众筹价格,用于在铸币时收取一定的费用。
根据上述3组属性的不同组合,有以下8种子类型:

发行人在部署代币合约时,可以根据需要,自行设置以上三组属性。

点击橙色【DEPLOY】按钮,出现下图:

上图中:
Tick: 4个字母的代币符号,这是唯一的,先到先得
Name:代币名称,最多20个字符
Hard Cap:最大发行量
Limit Per Mint:每次铸造得到的代币数量
如果只填上述四项,则会发行一个无冷冻期,无持仓条件,免费铸造的FERC20代币。
填完后,点击右下方【DEPLOY】按钮,调用【metamask钱包】,开始部署新代币。
点击上图【More Setting...】按钮,显示高阶代币配置。

填完后,点击右下方【DEPLOY】按钮,调用【metamask钱包】,开始部署新代币。

点击上图按钮,即可开始铸造。首先会显示该代币的详情,如下图:

查看铸造参数是否正确。
注意:如果有持仓条件的代币铸造,如果持仓条件不满足,会出现红色提示,这时无法继续铸造。
点击【MINT】按钮后,会弹出【metamask钱包】要求确认,见下图:

仔细查看上图中绿色框部分,这是铸造费用(因为本教程是在Polygon测试网上运行,故而显示MATIC,在以太坊主网上是ETH)
确认无误后,在【metamask钱包】中点击【确认】按钮,签名并发送交易。
过一会,会显示交易确认,完成铸币。
如果代币有冷冻期,则在免费铸造后,会进入冷冻期。
在冷冻期内,可以继续铸造,但是需要向平台支付一笔小费(ETH计价)。进入冷冻期后第一笔铸造小费为0.00025ETH,第二次为0.0005ETH,第三次为0.001ETH。。。即每次增加一倍。
在冷冻期内,点击【MINT】按钮,会出现下图提示:

点选确认支付小费后,再次点击【MINT】按钮,启动铸造。

注意:上图红框中包括了两笔费用,一笔是小费,一笔是众筹费(如果代币没有众筹费,则只有小费)
如果要继续在冷冻期内铸造,小费数量会翻倍,如下图:

免费(只支付Gas费,下同)
免费
第一次免费,进入冷冻期后,第二次收取0.00025ETH,第三次收取0.0005ETH,每次翻倍。直至冷冻期结束,拥有一次免费铸造,再次进入冷冻期。
每次收取1%手续费。如众筹价格为0.1ETH每FERC20,则手续费为0.001ETH,0.099ETH即时进到众筹组织者账户。
InscriptionFactory.sol和Inscription.sol合约未经审计,请自行评估合约风险。
合约开源地址:https://gist.github.com/jackygu2006/39dbc920703bcc46c8aa0fb2a071f720
我们非常高兴地宣布,erc20.cash 上线了。这是一个更公平的的ERC20代币方案,我们将它命名为:Fair ERC-20,简称FERC20。
今年3月8日,BRC20代币在比特币链上通过Ordinals部署成功,在短短一两个月内吸引了大量关注和资金的参与。BRC20代币的成功得益于以下几个原因:
简洁的Ordinals协议使得BRC20发行方无法在代币上做过多的编程,避免了在以太坊合约中各种安全风险和一些自私的设计。
人人平等的铸币权。BRC20的发行方或项目团队,无法像在以太坊智能合约中通常做的那样,给自己或相关利益方预留一部分免费(低价)代币。在铸造BRC20时,所有人都站在同一起跑线上,即使发行方和团队也是如此。
比特币的UTXO机制和低性能,让很多具有速度优势的智能合约机器人无法在比特币网络上工作,从而防止了通过技术手段获得比正常参与者更大的优势以及由此造成的不公平。
上述原因使得BRC20对社区参与者来说,更公平,从而吸引了更多人参与。
但是,即使如此,有个非常有意思的现象是:大多数以太坊社区的成员尚未参与BRC20。
所以,我们想,是否能将BRC20的公平发售(Fairlaunch)精神通过智能合约在以太坊(及其他EVM链)上实现,让更多的社区参与?
FERC20就是这个想法的实验结果。
FERC20基于ERC20标准协议,所以具有BRC20不具备的特点,包括但不限于:
可以方便的在大众所熟悉的钱包内转账,不需要下载新的钱包软件;
可以在以太坊强大的DEFI生态中使用,包括DEX,借贷,多签等等;
FERC20代币无owner权限,即无主代币;
Tick字符数可升级;
没有预挖,代币总量从零开始挖,到达到硬顶为止;
高度去中心化,系统架构无服务器,包括搜索、查找等功能,全部在智能合约中进行;
不是BRC20代打平台,用户直接与合约交互;
在以太坊上实现BRC20,主要的难度在于如何在以太坊上实现比特币链上较为有效的对女巫和智能合约机器人的防范,以维护参与者的公平性。
为此,我们尝试了在ERC20标准合约基础上,添加了3组属性:
冷冻期: 当用户第一次铸币后,会进入冷冻期,在冷冻期内如果想继续铸币,需要向平台支付小费。每次额外的铸币,小费都会翻倍。如:在冷冻期内第一次铸币,将支付0.00025 ETH,第二次需要支付0.0005 ETH,第三次需要支付0.001 ETH。。。
需要注意的是,对于设置了冷冻期的FERC20,不能批量铸币(Rollup Mint)
持仓条件: 部署人可以设置持仓条件,用于防止女巫帐号大规模快速铸币。 持仓资产包括NFT和其他ERC20代币。
预售/众筹: 部署人可以设置代币的预售/众筹价格,用于在铸币时收取一定的费用。
根据上述3组属性的不同组合,有以下8种子类型:

发行人在部署代币合约时,可以根据需要,自行设置以上三组属性。

点击橙色【DEPLOY】按钮,出现下图:

上图中:
Tick: 4个字母的代币符号,这是唯一的,先到先得
Name:代币名称,最多20个字符
Hard Cap:最大发行量
Limit Per Mint:每次铸造得到的代币数量
如果只填上述四项,则会发行一个无冷冻期,无持仓条件,免费铸造的FERC20代币。
填完后,点击右下方【DEPLOY】按钮,调用【metamask钱包】,开始部署新代币。
点击上图【More Setting...】按钮,显示高阶代币配置。

填完后,点击右下方【DEPLOY】按钮,调用【metamask钱包】,开始部署新代币。

点击上图按钮,即可开始铸造。首先会显示该代币的详情,如下图:

查看铸造参数是否正确。
注意:如果有持仓条件的代币铸造,如果持仓条件不满足,会出现红色提示,这时无法继续铸造。
点击【MINT】按钮后,会弹出【metamask钱包】要求确认,见下图:

仔细查看上图中绿色框部分,这是铸造费用(因为本教程是在Polygon测试网上运行,故而显示MATIC,在以太坊主网上是ETH)
确认无误后,在【metamask钱包】中点击【确认】按钮,签名并发送交易。
过一会,会显示交易确认,完成铸币。
如果代币有冷冻期,则在免费铸造后,会进入冷冻期。
在冷冻期内,可以继续铸造,但是需要向平台支付一笔小费(ETH计价)。进入冷冻期后第一笔铸造小费为0.00025ETH,第二次为0.0005ETH,第三次为0.001ETH。。。即每次增加一倍。
在冷冻期内,点击【MINT】按钮,会出现下图提示:

点选确认支付小费后,再次点击【MINT】按钮,启动铸造。

注意:上图红框中包括了两笔费用,一笔是小费,一笔是众筹费(如果代币没有众筹费,则只有小费)
如果要继续在冷冻期内铸造,小费数量会翻倍,如下图:

免费(只支付Gas费,下同)
免费
第一次免费,进入冷冻期后,第二次收取0.00025ETH,第三次收取0.0005ETH,每次翻倍。直至冷冻期结束,拥有一次免费铸造,再次进入冷冻期。
每次收取1%手续费。如众筹价格为0.1ETH每FERC20,则手续费为0.001ETH,0.099ETH即时进到众筹组织者账户。
InscriptionFactory.sol和Inscription.sol合约未经审计,请自行评估合约风险。
合约开源地址:https://gist.github.com/jackygu2006/39dbc920703bcc46c8aa0fb2a071f720
No activity yet