
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...
FERC20:一个更公平的ERC20方案
简介我们非常高兴地宣布,erc20.cash 上线了。这是一个更公平的的ERC20代币方案,我们将它命名为:Fair ERC-20,简称FERC20。 今年3月8日,BRC20代币在比特币链上通过Ordinals部署成功,在短短一两个月内吸引了大量关注和资金的参与。BRC20代币的成功得益于以下几个原因:简洁的Ordinals协议使得BRC20发行方无法在代币上做过多的编程,避免了在以太坊合约中各种安全风险和一些自私的设计。人人平等的铸币权。BRC20的发行方或项目团队,无法像在以太坊智能合约中通常做的那样,给自己或相关利益方预留一部分免费(低价)代币。在铸造BRC20时,所有人都站在同一起跑线上,即使发行方和团队也是如此。比特币的UTXO机制和低性能,让很多具有速度优势的智能合约机器人无法在比特币网络上工作,从而防止了通过技术手段获得比正常参与者更大的优势以及由此造成的不公平。上述原因使得BRC20对社区参与者来说,更公平,从而吸引了更多人参与。 但是,即使如此,有个非常有意思的现象是:大多数以太坊社区的成员尚未参与BRC20。 所以,我们想,是否能将BRC20的公平发售(Fa...

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...
FERC20:一个更公平的ERC20方案
简介我们非常高兴地宣布,erc20.cash 上线了。这是一个更公平的的ERC20代币方案,我们将它命名为:Fair ERC-20,简称FERC20。 今年3月8日,BRC20代币在比特币链上通过Ordinals部署成功,在短短一两个月内吸引了大量关注和资金的参与。BRC20代币的成功得益于以下几个原因:简洁的Ordinals协议使得BRC20发行方无法在代币上做过多的编程,避免了在以太坊合约中各种安全风险和一些自私的设计。人人平等的铸币权。BRC20的发行方或项目团队,无法像在以太坊智能合约中通常做的那样,给自己或相关利益方预留一部分免费(低价)代币。在铸造BRC20时,所有人都站在同一起跑线上,即使发行方和团队也是如此。比特币的UTXO机制和低性能,让很多具有速度优势的智能合约机器人无法在比特币网络上工作,从而防止了通过技术手段获得比正常参与者更大的优势以及由此造成的不公平。上述原因使得BRC20对社区参与者来说,更公平,从而吸引了更多人参与。 但是,即使如此,有个非常有意思的现象是:大多数以太坊社区的成员尚未参与BRC20。 所以,我们想,是否能将BRC20的公平发售(Fa...

Subscribe to jackygu's blog

Subscribe to jackygu's blog
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
FERC20 社区,大家好,
我是Jacky,这两天一直忙于FERC20的合约验证,但因为合约在编译过程中使用了新的viaIR技术,至今未能在以太坊区块链浏览器上成功验证合约,我找了国内外技术圈的朋友,尚未解决。
这意味着大家暂时无法在区块链浏览器的Contract标签页中看到合约源码。
但合约的验证是非常重要的,这决定了社区对智能合约是否信任。所以我想了一个临时方案来证明目前部署在主网上的智能合约,与github上公布的合约相同。并希望社区里熟悉智能合约技术的同学来验证这件事。
下面我将验证步骤详细介绍如下:(以下方法用于V1,V2版本方法也可一样验证)
FERC20一共有两个合约:InscriptionFactory.sol和Inscription.sol。
前者用于管理所有的FERC20代币合约,包括生成代币、检索代币等功能;
后者即FERC20合约,它继承了标准的ERC20并做了一些功能上的扩展。
因为Inscription.sol合约被包含在InscriptionFactory.sol中,所以只需要一份InscriptionFactory.sol源文件即可。
合约源文件:https://github.com/jackygu2006/ferc20_contracts
为方便社区技术同学验证,我已将InscriptionFactory.sol合约做扁平化处理,扁平化后的源文件:https://gist.github.com/jackygu2006/5d1cb712cbd7ac46e9950f5832494a74
将InscriptionFactory.sol合约部署到与以太坊主网一模一样的Goerli测试网上。
打开Remix工具,新建一个空合约文件,命名为InscriptionFactory.sol,然后将从上面github复制下来的源文件粘贴至合约文件里。如下图:


然后点击上图下方的红色框位置,选择 Use configuration file, 并点击 compiler_config.json,会在主窗口看到配置文件,如下图。

重点:在compiler_config.json配置文件中加上 "viaIR" : true,如上图中红色部分。

按上图指示,先选择编译环境为Injected Provider - MetaMask,这时候Remix会链接Metamask钱包,请确保连接到Goerli测试网,并确保操作账户中有一些测试币(0.1E就够了)。Metamask钱包链接成功后,会看到显示Goerli(5) network
然后在合约中选择InscriptionFactory,并点击 Deploy 按钮。
如果一切顺利,会弹出Metamask钱包,你可以选择较低的Gas价格,并签名发送交易,约15秒后,合约部署完毕,将在测试网上新部署的InscriptionFactory合约地址复制保留。
因为编译合约时使用了viaIR方式,所以无法通过常规的在区块链浏览器中上传合约源码的方式进行验证,只能通过standard-json-input方式验证。因此,我们需要一个包括合约源码和配置的json文件。
关于如何生成该文件,在reddit上有个帖子可以参考,链接。
如果你使用hardhat开发合约,则可以在build下得到standard-json-input.json文件。

通过上述方式部署完成后,即得到一个合约地址。大家可以按我下面的方法进行操作(但请将我的合约地址换成你们部署后得到的地址)
我部署后得到的在Goerli上的InscriptionFactory合约地址为:0xfb1be5133e61012de5790589c9b8f9e5d79978df
打开Goerli浏览器:https://goerli.etherscan.io/



请务必按上图中的选项选择,即:
编译类型为Solidity(Standard-Json-Input)
编译器版本为v0.8.18+commit.87f61d96
开源协议选择MIT
然后点击Continue按钮,进到下一页,见下图:

选择第二步生成的standard-json-input.json文件,然后点击Step2上传该文件。
接着点击下方的蓝色Verify and publish 按钮,半分钟左右,出现下图页面:

注意:上面这个页面表示源码验证失败,不过这无关紧要。
在上面页面上找到下图红色位置,复制Goerli测试链上已经部署的智能合约字节码,并保存为文件。因为较长,就不粘贴在这里了。

与第三步的步骤相同,只是打开的是以太坊主网浏览器,合约地址是主网上的。
主网已经在运行的InscriptionFactory合约地址为:0x47B9949041EbF2472332883e64025D5d024941C6
(这里省略,请参考第三步)
最后,拿到在主网上部署的InscriptionFactory合约字节码,复制并保存。

注意,必须要每个字节都相同,才能证明两段程序的相同
我已按照上述方案验证通过,每个人都可以按上述方式验证
智能合约是将源代码编译后得到的字节码部署到区块链上的一段程序。原则是:源码相同,字节码必然相同,源码不同,字节码必然不同。
以太坊Goerli测试网与主网完全一致,所以,我们就可以通过对比测试网和主网上的字节码来验证github上开源的合约是否就是部署在区块链上的智能合约。
以上只是用于验证开源合约与链上合约一致性的临时解决方案,我称之为通过以太坊官方主网和官方测试网的间接验证。
社区里有同学能解决直接在以太坊主网上验证该合约的,请下载合约源码后自行处理,解决后,请截图后通过推特跟我联系,或者发推特并 @jackygu2020,第一个解决该问题的同学将从捐赠池中获得1000 ferc。
我相信通过社区,很快能解决这个问题。
谢谢大家的支持!!!
Jacky 2023-6-7 18:00(+8)
FERC20 社区,大家好,
我是Jacky,这两天一直忙于FERC20的合约验证,但因为合约在编译过程中使用了新的viaIR技术,至今未能在以太坊区块链浏览器上成功验证合约,我找了国内外技术圈的朋友,尚未解决。
这意味着大家暂时无法在区块链浏览器的Contract标签页中看到合约源码。
但合约的验证是非常重要的,这决定了社区对智能合约是否信任。所以我想了一个临时方案来证明目前部署在主网上的智能合约,与github上公布的合约相同。并希望社区里熟悉智能合约技术的同学来验证这件事。
下面我将验证步骤详细介绍如下:(以下方法用于V1,V2版本方法也可一样验证)
FERC20一共有两个合约:InscriptionFactory.sol和Inscription.sol。
前者用于管理所有的FERC20代币合约,包括生成代币、检索代币等功能;
后者即FERC20合约,它继承了标准的ERC20并做了一些功能上的扩展。
因为Inscription.sol合约被包含在InscriptionFactory.sol中,所以只需要一份InscriptionFactory.sol源文件即可。
合约源文件:https://github.com/jackygu2006/ferc20_contracts
为方便社区技术同学验证,我已将InscriptionFactory.sol合约做扁平化处理,扁平化后的源文件:https://gist.github.com/jackygu2006/5d1cb712cbd7ac46e9950f5832494a74
将InscriptionFactory.sol合约部署到与以太坊主网一模一样的Goerli测试网上。
打开Remix工具,新建一个空合约文件,命名为InscriptionFactory.sol,然后将从上面github复制下来的源文件粘贴至合约文件里。如下图:


然后点击上图下方的红色框位置,选择 Use configuration file, 并点击 compiler_config.json,会在主窗口看到配置文件,如下图。

重点:在compiler_config.json配置文件中加上 "viaIR" : true,如上图中红色部分。

按上图指示,先选择编译环境为Injected Provider - MetaMask,这时候Remix会链接Metamask钱包,请确保连接到Goerli测试网,并确保操作账户中有一些测试币(0.1E就够了)。Metamask钱包链接成功后,会看到显示Goerli(5) network
然后在合约中选择InscriptionFactory,并点击 Deploy 按钮。
如果一切顺利,会弹出Metamask钱包,你可以选择较低的Gas价格,并签名发送交易,约15秒后,合约部署完毕,将在测试网上新部署的InscriptionFactory合约地址复制保留。
因为编译合约时使用了viaIR方式,所以无法通过常规的在区块链浏览器中上传合约源码的方式进行验证,只能通过standard-json-input方式验证。因此,我们需要一个包括合约源码和配置的json文件。
关于如何生成该文件,在reddit上有个帖子可以参考,链接。
如果你使用hardhat开发合约,则可以在build下得到standard-json-input.json文件。

通过上述方式部署完成后,即得到一个合约地址。大家可以按我下面的方法进行操作(但请将我的合约地址换成你们部署后得到的地址)
我部署后得到的在Goerli上的InscriptionFactory合约地址为:0xfb1be5133e61012de5790589c9b8f9e5d79978df
打开Goerli浏览器:https://goerli.etherscan.io/



请务必按上图中的选项选择,即:
编译类型为Solidity(Standard-Json-Input)
编译器版本为v0.8.18+commit.87f61d96
开源协议选择MIT
然后点击Continue按钮,进到下一页,见下图:

选择第二步生成的standard-json-input.json文件,然后点击Step2上传该文件。
接着点击下方的蓝色Verify and publish 按钮,半分钟左右,出现下图页面:

注意:上面这个页面表示源码验证失败,不过这无关紧要。
在上面页面上找到下图红色位置,复制Goerli测试链上已经部署的智能合约字节码,并保存为文件。因为较长,就不粘贴在这里了。

与第三步的步骤相同,只是打开的是以太坊主网浏览器,合约地址是主网上的。
主网已经在运行的InscriptionFactory合约地址为:0x47B9949041EbF2472332883e64025D5d024941C6
(这里省略,请参考第三步)
最后,拿到在主网上部署的InscriptionFactory合约字节码,复制并保存。

注意,必须要每个字节都相同,才能证明两段程序的相同
我已按照上述方案验证通过,每个人都可以按上述方式验证
智能合约是将源代码编译后得到的字节码部署到区块链上的一段程序。原则是:源码相同,字节码必然相同,源码不同,字节码必然不同。
以太坊Goerli测试网与主网完全一致,所以,我们就可以通过对比测试网和主网上的字节码来验证github上开源的合约是否就是部署在区块链上的智能合约。
以上只是用于验证开源合约与链上合约一致性的临时解决方案,我称之为通过以太坊官方主网和官方测试网的间接验证。
社区里有同学能解决直接在以太坊主网上验证该合约的,请下载合约源码后自行处理,解决后,请截图后通过推特跟我联系,或者发推特并 @jackygu2020,第一个解决该问题的同学将从捐赠池中获得1000 ferc。
我相信通过社区,很快能解决这个问题。
谢谢大家的支持!!!
Jacky 2023-6-7 18:00(+8)
No activity yet