
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
Covid-19似乎已经与我们远去,但过去两年半来,这场全球大流行病给我们带来了巨大的冲击,其影响将长期延续。新冠病毒的出现改变了我们的生活方式、经济格局和全球卫生安全的认识。尽管疫苗的开发和广泛接种取得了一定的进展,但全球范围内仍然存在着新冠病毒的传播和感染风险。
未来,新冠病毒是否会再次出现是一个令人关注的问题。由于病毒的变异性和传染性,无法完全排除新的变种或突发疫情的可能性。科学家、医疗专家和政府机构都在持续研究和监测新冠病毒的发展,以便及时采取措施来预防和控制潜在的疫情爆发。
三天前,我找到了NetLogo这个用于生物学,社会学,经济学等领域的建模软件,然后花了一天时间学习使用和编程。**学习这个软件的目的是为了尝试通过建模方式,研究加密货币市场中的交易者行为,并试图用这种新的方法论来建立加密货币的价格模型。**设计完模型架构后,发现这个模型的复杂度相当高,作为一个NetLogo新手,很难驾驭,所以试着找到一个较为简单的模型来练练手。
Covid-19是一个非常典型的多主体模型(Agent-based modeling - ABM)复杂模型,而NetLogo正是一个广泛用于建立、模拟复杂系统的工具。使用NetLogo来为Covid-19建模,可以帮助我们更好地理解病毒传播的动态过程、影响因素和应对策略。通过建立模型并进行模拟实验,我们可以探索不同的假设和策略,评估它们在控制疫情和减轻影响方面的效果。


Covid-19似乎已经与我们远去,但过去两年半来,这场全球大流行病给我们带来了巨大的冲击,其影响将长期延续。新冠病毒的出现改变了我们的生活方式、经济格局和全球卫生安全的认识。尽管疫苗的开发和广泛接种取得了一定的进展,但全球范围内仍然存在着新冠病毒的传播和感染风险。
未来,新冠病毒是否会再次出现是一个令人关注的问题。由于病毒的变异性和传染性,无法完全排除新的变种或突发疫情的可能性。科学家、医疗专家和政府机构都在持续研究和监测新冠病毒的发展,以便及时采取措施来预防和控制潜在的疫情爆发。
三天前,我找到了NetLogo这个用于生物学,社会学,经济学等领域的建模软件,然后花了一天时间学习使用和编程。**学习这个软件的目的是为了尝试通过建模方式,研究加密货币市场中的交易者行为,并试图用这种新的方法论来建立加密货币的价格模型。**设计完模型架构后,发现这个模型的复杂度相当高,作为一个NetLogo新手,很难驾驭,所以试着找到一个较为简单的模型来练练手。
Covid-19是一个非常典型的多主体模型(Agent-based modeling - ABM)复杂模型,而NetLogo正是一个广泛用于建立、模拟复杂系统的工具。使用NetLogo来为Covid-19建模,可以帮助我们更好地理解病毒传播的动态过程、影响因素和应对策略。通过建立模型并进行模拟实验,我们可以探索不同的假设和策略,评估它们在控制疫情和减轻影响方面的效果。


在这个模型中,我设了四个参数,分别是:
population: 即人口密度,取值范围0~5000
infectiousness: 感染率,即当正常人遇到一个感染者时,被感染的概率,取值范围0~100,代表0%~100%
recover-days: 即接受治疗后,多少天可以康复,取值范围0~100天
immunitydays: 在康复后,获得免疫力的天数,过了这个免疫期,如果再次遇到感染者,会第二次被感染
输出的结果有两个:
%infection: 即感染率,感染率的计算方式:
set %infection (count turtles with [color = red] / count turtles) * 100
上述代码意思是感染人群(count turtles with [color = red])数量占总人群(count turtles)的比例。
died: 死亡人数,计算方式:
ask n-of (count turtles with [color = red] * 0.001) turtles with [color = red] [
set died died + 1
die
]
上面代码中0.001是死亡率,在这里指0.1%。上述代码意思是指在感染人群([color = red])按死亡率随机选择n个患者,设为die,并将died加1
globals [
%infection
died
max-ticks
]
turtles-own [
infected-tick
recovered-tick
]
to setup
clear-all
reset-ticks
ask patches [set pcolor white] ;;设置背景
create-turtles population [ ;;创建人,数量为population参数
set shape "person" ;;设置为人的形状
set color green ;;将健康人设为绿色
set recovered-tick 0 ;;将康复时间设为0
setxy random-xcor random-ycor ;;随机将人放在不同位置
]
ask n-of 1 turtles [ ;;随机确定一个人为0号感染者,如果需要设置多个,将1改为相应数量
set color red ;;将感染者设为红色
set infected-tick ticks ;;设置感染时间ticks
]
set %infection (count turtles with [color = red] / count turtles) * 100 ;;计算感染率
set max-ticks 1000 ;;设置模型最多天数为1000天
end
to go
if ticks >= max-ticks or %infection = 0 [stop] ;;如果感染率为0,或者达到最大ticks时,停止模型
tick ;;前进一天
;;随机游走1步,相当于人与人的随机接触
ask turtles [
rt random 180
lt random 180
fd 1
]
ask turtles with [color = red] [
ask other turtles-here with [color = green] [ ;;在同一地区,遇到健康的人
if random 100 < %infectiousness and ;;如果随机数小于感染率,并且没有康复过,或者康复过,但是已过康复后免疫期,则被感染
(recovered-tick = 0 or recovered-tick + immunitydays < ticks) [
set color red ;;设为感染状态-红色
set infected-tick ticks ;;设置感染时间为当下ticks
set recovered-tick 0 ;;设置感染后康复时间为0
]
]
if infected-tick + recover-days < ticks [ ;;如果感染后一段时间后,康复
set color green ;;设为康复状态-绿色
set infected-tick max-ticks ;;设感染时间为最大值
set recovered-tick ticks ;;设置康复时间为当下ticks
]
]
;;判断是否死亡,见3.2
ask n-of (count turtles with [color = red] * 0.001) turtles with [color = red] [
set died died + 1
die
]
set %infection (count turtles with [color = red] / count turtles) * 100
end

见上图红色框中的组件,在这个模型中,我建了10个组件,分别是:
按钮
setup 初始化
go 循环执行一步
滚动条Slider
population
%infectiousness
recover-days
immunitydays
监视器
%infection 感染率
died 死亡人数
图表 plot
Infection 感染率曲线图
Died 死亡人数曲线
下面我将不同参数下得到的模型结果列在下面,为方便起见,只显示监控器和图标。另外,每组参数都会进行三个模拟,所以会有三个图片:

我不是医学专家,以上只是从数学建模方式提供一些数据参考,作为学习NetLogo的一个案例。
在这个模型中,我设了四个参数,分别是:
population: 即人口密度,取值范围0~5000
infectiousness: 感染率,即当正常人遇到一个感染者时,被感染的概率,取值范围0~100,代表0%~100%
recover-days: 即接受治疗后,多少天可以康复,取值范围0~100天
immunitydays: 在康复后,获得免疫力的天数,过了这个免疫期,如果再次遇到感染者,会第二次被感染
输出的结果有两个:
%infection: 即感染率,感染率的计算方式:
set %infection (count turtles with [color = red] / count turtles) * 100
上述代码意思是感染人群(count turtles with [color = red])数量占总人群(count turtles)的比例。
died: 死亡人数,计算方式:
ask n-of (count turtles with [color = red] * 0.001) turtles with [color = red] [
set died died + 1
die
]
上面代码中0.001是死亡率,在这里指0.1%。上述代码意思是指在感染人群([color = red])按死亡率随机选择n个患者,设为die,并将died加1
globals [
%infection
died
max-ticks
]
turtles-own [
infected-tick
recovered-tick
]
to setup
clear-all
reset-ticks
ask patches [set pcolor white] ;;设置背景
create-turtles population [ ;;创建人,数量为population参数
set shape "person" ;;设置为人的形状
set color green ;;将健康人设为绿色
set recovered-tick 0 ;;将康复时间设为0
setxy random-xcor random-ycor ;;随机将人放在不同位置
]
ask n-of 1 turtles [ ;;随机确定一个人为0号感染者,如果需要设置多个,将1改为相应数量
set color red ;;将感染者设为红色
set infected-tick ticks ;;设置感染时间ticks
]
set %infection (count turtles with [color = red] / count turtles) * 100 ;;计算感染率
set max-ticks 1000 ;;设置模型最多天数为1000天
end
to go
if ticks >= max-ticks or %infection = 0 [stop] ;;如果感染率为0,或者达到最大ticks时,停止模型
tick ;;前进一天
;;随机游走1步,相当于人与人的随机接触
ask turtles [
rt random 180
lt random 180
fd 1
]
ask turtles with [color = red] [
ask other turtles-here with [color = green] [ ;;在同一地区,遇到健康的人
if random 100 < %infectiousness and ;;如果随机数小于感染率,并且没有康复过,或者康复过,但是已过康复后免疫期,则被感染
(recovered-tick = 0 or recovered-tick + immunitydays < ticks) [
set color red ;;设为感染状态-红色
set infected-tick ticks ;;设置感染时间为当下ticks
set recovered-tick 0 ;;设置感染后康复时间为0
]
]
if infected-tick + recover-days < ticks [ ;;如果感染后一段时间后,康复
set color green ;;设为康复状态-绿色
set infected-tick max-ticks ;;设感染时间为最大值
set recovered-tick ticks ;;设置康复时间为当下ticks
]
]
;;判断是否死亡,见3.2
ask n-of (count turtles with [color = red] * 0.001) turtles with [color = red] [
set died died + 1
die
]
set %infection (count turtles with [color = red] / count turtles) * 100
end

见上图红色框中的组件,在这个模型中,我建了10个组件,分别是:
按钮
setup 初始化
go 循环执行一步
滚动条Slider
population
%infectiousness
recover-days
immunitydays
监视器
%infection 感染率
died 死亡人数
图表 plot
Infection 感染率曲线图
Died 死亡人数曲线
下面我将不同参数下得到的模型结果列在下面,为方便起见,只显示监控器和图标。另外,每组参数都会进行三个模拟,所以会有三个图片:

我不是医学专家,以上只是从数学建模方式提供一些数据参考,作为学习NetLogo的一个案例。
No activity yet