有三个主要费用 network、computing、action。network 包含消息发送的费用,一般由 sender 付,钱包里一般消息的 value 和 network fee 是分别支付的,而合约中默认是从消息的 value 中支付的。computing 是执行合约的费用,action 是合约发送 external message 的费用,主要就是 emit。(此外还有 storage fee 先不管了)
ctx.value
代表的是 inflow msg 携带的 value,sender 已经付过了 network fee,还没支付 computing 和 action。合约执行后会扣除 computing,执行完成后如果有需要发送的 outflow 消息,那么再扣除 action fee。可以把
ctx.value
理解为税前收入,而且你无法知道会收多少税(computing & action fees)。补充:FunC 里是可以精确计算 fwd_fee 的,但是感觉 tact 不太行,可参考:
* https://docs.ton.org/develop/smart-contracts/fee-calculation
* https://github.com/ton-blockchain/stablecoin-contract/blob/main/contracts/gas.fc
* https://tonviewer.com/config#24
myBalance() - ctx.value
代表合约执行前的余额。可以用 nativeReserve(myBalance() - ctx.value, ReserveExact);
来保护合约余额不被用户消息所消耗。但是你在合约代码中极难通过控制
ctx.value
来计算你能操作的 inflow 余额,因为 computing 和 action 的开销是很难计算的。比如如果你想要把剩余的 inflow value 全部转走,可行的办法是用 nativeReserve
锁定不想转走的余额,然后再用 SendRemainingBalance
mode 发送一条 value 为 0 的消息。SendRemainingBalance
会转走未被 nativeReserve
锁定的全部金额,按照上文描述,也就是所有剩余的 ctx.value
。但是 emit 具体花多少钱?我还不知道怎么算,目前是估计一个经验值,测试网是
0.007
,你可以多锁定 0.01
给 emit。 #blockchainprev: https://t.me/laiskynotes/318
next: https://t.me/laiskynotes/324
最近都在学习 TON 开发,积累了一些经验。TON 有很多独特的设计和开发范式,值得先记个小笔记,主要以 Ethereum/EVM 作对比。这是基于我目前的理解,不一定正确,有兴趣欢迎讨论。
1. 所有的调用都是消息,所有的消息都是异步的。也就是说,你没法同步取得跨合约调用的结果。
2. 每次调用的费用是非确定性的,而且因为整个调用是异步的,没法预知调用的总费用。所以只能先给一个相对较高的手续费,然后等合约执行完后退还余款。TON 的费用的精确控制非常困难,我花了很多时间在这上面,这个以后可以单独讲一篇,简而言之就是整个调用链应该有一个唯一的起点和唯一的终点。唯一的起点是因为交易发起者只有一个人,唯一的终点是因为要汇集所有消息的余额。
注意,交易执行的总费用是很可能超过用户支付的 input value 的,换言之合约在用自己的余额给用户交易付费,要特别小心!
3. 合约在链上不会永久存在,部署 code 和 data 后状态会成为 active,但是同时会开始计费缴纳租金。租金从合约余额扣除,扣完后经过一段时间后合约的数据会被删除,仅保留哈希。用户可以重新上传数据恢复合约。如果一段时间后未恢复,所有的链上数据都会被销毁。之所以这样做是因为 TON 链上交互非常依赖子合约,子合约的数量会随着用户量倍增,必须通过限制合约存活时间来控制链上数据量。
4. 合约不会直接和用户交互,而是会用用户的钱包地址给用户部署一个子合约,然后主合约和这个子合约交互。子合约里会有两个属性,master 指向主合约,owner 指向用户的钱包合约地址。这样做的好处是,因为子合约代码是主合约部署的,那么子合约的行为就是确定性的。所以 TON 的合约开发类似于工厂模式,你首先需要编写一个主合约,然后需要给你所有的交互对象各自编写一个子合约。
5. 主合约内不保存任何用户数据,仅保留必须的全局变量。这是和 EVM 最显著的一个区别。拿 ERC-20 代币来说,EVM 合约需要存储一个巨大的用户账本。而 TON 的主合约什么都不存,只需要给用户部署一个子合约,然后将用户持有的代币信息保存在子合约里即可。因为子合约的代码是主合约部署的,所以行为完全可控和可信。用户间转账只需要子合约间互相通信即可,双方可以通过校验对方的地址来确定合约代码的完整性,毕竟合约地址本质上就是合约代码和初始化数据的哈希,而初始化参数往往就是 master 和 owner 的地址。
6. 我目前的开发组合是 blueprint + tact + tonkeeper。开发体验非常痛苦,缺乏必要的文档和示例,等我有空整理一篇博客。 #blockchain
prev: https://t.me/laiskynotes/296
next: https://t.me/laiskynotes/319
1. 所有的调用都是消息,所有的消息都是异步的。也就是说,你没法同步取得跨合约调用的结果。
2. 每次调用的费用是非确定性的,而且因为整个调用是异步的,没法预知调用的总费用。所以只能先给一个相对较高的手续费,然后等合约执行完后退还余款。TON 的费用的精确控制非常困难,我花了很多时间在这上面,这个以后可以单独讲一篇,简而言之就是整个调用链应该有一个唯一的起点和唯一的终点。唯一的起点是因为交易发起者只有一个人,唯一的终点是因为要汇集所有消息的余额。
注意,交易执行的总费用是很可能超过用户支付的 input value 的,换言之合约在用自己的余额给用户交易付费,要特别小心!
3. 合约在链上不会永久存在,部署 code 和 data 后状态会成为 active,但是同时会开始计费缴纳租金。租金从合约余额扣除,扣完后经过一段时间后合约的数据会被删除,仅保留哈希。用户可以重新上传数据恢复合约。如果一段时间后未恢复,所有的链上数据都会被销毁。之所以这样做是因为 TON 链上交互非常依赖子合约,子合约的数量会随着用户量倍增,必须通过限制合约存活时间来控制链上数据量。
4. 合约不会直接和用户交互,而是会用用户的钱包地址给用户部署一个子合约,然后主合约和这个子合约交互。子合约里会有两个属性,master 指向主合约,owner 指向用户的钱包合约地址。这样做的好处是,因为子合约代码是主合约部署的,那么子合约的行为就是确定性的。所以 TON 的合约开发类似于工厂模式,你首先需要编写一个主合约,然后需要给你所有的交互对象各自编写一个子合约。
5. 主合约内不保存任何用户数据,仅保留必须的全局变量。这是和 EVM 最显著的一个区别。拿 ERC-20 代币来说,EVM 合约需要存储一个巨大的用户账本。而 TON 的主合约什么都不存,只需要给用户部署一个子合约,然后将用户持有的代币信息保存在子合约里即可。因为子合约的代码是主合约部署的,所以行为完全可控和可信。用户间转账只需要子合约间互相通信即可,双方可以通过校验对方的地址来确定合约代码的完整性,毕竟合约地址本质上就是合约代码和初始化数据的哈希,而初始化参数往往就是 master 和 owner 的地址。
6. 我目前的开发组合是 blueprint + tact + tonkeeper。开发体验非常痛苦,缺乏必要的文档和示例,等我有空整理一篇博客。 #blockchain
prev: https://t.me/laiskynotes/296
next: https://t.me/laiskynotes/319
2023 年美国最高法院在 Students for Fair Admissions v. Harvard 案件的判决中否认了高校根据种族分配名额的 Affirmative Action,然后今年作为 AA 法案被废除后的第一个学年,各大高校的招生数据都显示,非裔、拉丁裔学生的比率大幅下降,白人变化不大,亚裔大幅上升。可以据此做出一个推论,此前的 AA 法案,实际上通过剥削亚裔,来给非裔和拉丁裔提供了更低的入学门槛。
https://laisky.notion.site/At-M-I-T-Black-and-Latino-Enrollment-Drops-Sharply-After-Affirmative-Action-Ban-NYT-9d838b0ec5f342e5bd26dfab730a4de9
next: https://t.me/laiskynotes/351
https://laisky.notion.site/At-M-I-T-Black-and-Latino-Enrollment-Drops-Sharply-After-Affirmative-Action-Ban-NYT-9d838b0ec5f342e5bd26dfab730a4de9
next: https://t.me/laiskynotes/351
读完《李光耀观天下》(One Man's View of the World),李光耀作为新加坡的首任总理,经历了新加坡独立、民主化建设、中国的改革开放、亚洲金融危机等诸多重大事件,对地缘政治和民族秉性有一些自己的见解,本书就是以他的这些个人见解为基础的一本访谈录。
我个人认为,虽然书中屡次强调新加坡民主,但李光耀的价值观是偏向于开明的独裁者,可以明显感受到他对于威权政府的推崇,他和施密特对谈时也特别提到了“政客”和“政治家”的区别,他所推崇的“政治家”就是如他自己这样的“开明的威权统治者”。
我现在已经对这些权势人物的“侃侃而谈”完全祛魅了。这些观点都是初看很有道理,但是仔细想想就会发现缺乏事实和细节,都是一些高屋建瓴的主观臆断。这些权势人物的另一个特点就是,独立演讲时都看似逻辑严密,充满智慧,但是他们的演讲中一定不会有另一个地位平等的反对者提出质疑,因为他们那些逻辑之所以初看上去自洽连贯,就是因为没有人指出那些隐藏的漏洞和事实错误而已。本书自然也不能免俗,书中的采访者基本都是在迎合李光耀,偶有一个地方稍稍到了反对党的不同意见,李光耀隐藏于温和下的跋扈就露了出来。 #book
我个人认为,虽然书中屡次强调新加坡民主,但李光耀的价值观是偏向于开明的独裁者,可以明显感受到他对于威权政府的推崇,他和施密特对谈时也特别提到了“政客”和“政治家”的区别,他所推崇的“政治家”就是如他自己这样的“开明的威权统治者”。
我现在已经对这些权势人物的“侃侃而谈”完全祛魅了。这些观点都是初看很有道理,但是仔细想想就会发现缺乏事实和细节,都是一些高屋建瓴的主观臆断。这些权势人物的另一个特点就是,独立演讲时都看似逻辑严密,充满智慧,但是他们的演讲中一定不会有另一个地位平等的反对者提出质疑,因为他们那些逻辑之所以初看上去自洽连贯,就是因为没有人指出那些隐藏的漏洞和事实错误而已。本书自然也不能免俗,书中的采访者基本都是在迎合李光耀,偶有一个地方稍稍到了反对党的不同意见,李光耀隐藏于温和下的跋扈就露了出来。 #book
--init
,compose 的话加一行 init: true
。这样容器就会以 init 为初始进程,来协助收割僵尸进程。
America’s right-wing radicals - US veterans against democracy
从 2021 年 1 月 6 日美国国会山暴乱开始讲起,指出当时的混乱中明显有一帮人非常有组织纪律,进而引出了以美国退伍老兵为核心力量的极右翼武装组织。退伍老兵对美国社会的一些现实不满,再加上对融入和平社会存在障碍,极易被各种极右翼组织洗脑,这些组织打着“保卫宪法”的口号,可以给予退伍老兵所习惯的“使命感和归宿感”,同时还能让他们重新回到武装组织,目前已经在全国范围内形成了很大的规模。
美国军人在参军时都进行过“保卫宪法”的宣誓,但是极右翼的“保卫宪法”事实上是破坏宪法。因为宪法的解释权属于联邦最高法院,而极右翼组织却认为自己有权利对宪法进行解释,所以极右翼事实上的诉求是反宪法、反联邦、反民主。
本来还回顾了 3K 党等历史上的极右翼历史,指出老兵在很多时候都是这些极右翼的中坚力量。而且美国的司法机构对于境内恐怖组织缺乏相关立法和监管,往往将这些白人为主的恐怖活动视为孤立案件,而忽略了其背后的组织性质,这和打击国际恐怖主义的态度有很大的不同,而正是这一不同使得很多事实上就是恐怖组织的极右翼组织得以在美国长期合法存在。
美国人口中的白人比率正在逐渐降低,而以法西斯、白人至上为核心理念的极右翼组织显然不会长期存在,那么他们是会随着移民涌入逐步和平解体,还是会做出激烈的困兽之斗呢?这是威胁着美国社会和平稳定的一个重要问题。
- Youtube
- Summary by AI
next: https://t.me/laiskynotes/315
从 2021 年 1 月 6 日美国国会山暴乱开始讲起,指出当时的混乱中明显有一帮人非常有组织纪律,进而引出了以美国退伍老兵为核心力量的极右翼武装组织。退伍老兵对美国社会的一些现实不满,再加上对融入和平社会存在障碍,极易被各种极右翼组织洗脑,这些组织打着“保卫宪法”的口号,可以给予退伍老兵所习惯的“使命感和归宿感”,同时还能让他们重新回到武装组织,目前已经在全国范围内形成了很大的规模。
美国军人在参军时都进行过“保卫宪法”的宣誓,但是极右翼的“保卫宪法”事实上是破坏宪法。因为宪法的解释权属于联邦最高法院,而极右翼组织却认为自己有权利对宪法进行解释,所以极右翼事实上的诉求是反宪法、反联邦、反民主。
本来还回顾了 3K 党等历史上的极右翼历史,指出老兵在很多时候都是这些极右翼的中坚力量。而且美国的司法机构对于境内恐怖组织缺乏相关立法和监管,往往将这些白人为主的恐怖活动视为孤立案件,而忽略了其背后的组织性质,这和打击国际恐怖主义的态度有很大的不同,而正是这一不同使得很多事实上就是恐怖组织的极右翼组织得以在美国长期合法存在。
美国人口中的白人比率正在逐渐降低,而以法西斯、白人至上为核心理念的极右翼组织显然不会长期存在,那么他们是会随着移民涌入逐步和平解体,还是会做出激烈的困兽之斗呢?这是威胁着美国社会和平稳定的一个重要问题。
- Youtube
- Summary by AI
next: https://t.me/laiskynotes/315
电商的美国游戏,靠卷赢不了:Temu 从来不只是一个关于电商的游戏,更是一个有关城市规划与国家发展的隐喻。
https://laisky.notion.site/by-MasterPa-91c9e21fddc649888b1024e156e464eb?pvs=4
一篇关于美国电商、城市建设和物流的文章,写得很好,信息量十足。
https://laisky.notion.site/by-MasterPa-91c9e21fddc649888b1024e156e464eb?pvs=4
一篇关于美国电商、城市建设和物流的文章,写得很好,信息量十足。
一个可以把 Telegram Channel 变成博客的小项目,我也跑了一个玩玩 https://notes.laisky.com/
可以通过 Docker 运行: https://github.com/Laisky/VPS/blob/ef4c83f028fc092c9f3a45cb3efef7e22f4c6274/b1-docker-compose.yml#L478-L488
ENV 文件的格式参考: https://github.com/ccbikai/BroadcastChannel?tab=readme-ov-file#%EF%B8%8F-configuration
注意,它是容器启动时抓取 telegram 数据的,所以需要时不时重启一下容器来更新数据。
搜索还是很糟糕,推特卡片适配也不好,还有很多细节需要打磨,目前感觉还不如 telegram web。
可以通过 Docker 运行: https://github.com/Laisky/VPS/blob/ef4c83f028fc092c9f3a45cb3efef7e22f4c6274/b1-docker-compose.yml#L478-L488
ENV 文件的格式参考: https://github.com/ccbikai/BroadcastChannel?tab=readme-ov-file#%EF%B8%8F-configuration
搜索还是很糟糕,推特卡片适配也不好,还有很多细节需要打磨,目前感觉还不如 telegram web。
别人分享的一个小片段,还挺有意思,哈哈哈哈。
NATO - The largest military alliance in the world
详细介绍了世界上最大的军事组织(北约)的前世今生。二战后为了预防下一场战争,西方联盟成立了北约(North Atlantic Treaty Organization, NATO),苏联成立了华约(Warsaw Treaty)。冷战后苏联解体,华约组织也随之解体,大批从苏联独立出来的东欧共和国因为担忧俄罗斯帝国主义的威胁,纷纷加入北约,导致北约的范围不断东扩,反而成为俄罗斯帝国主义侵略行动的借口。
本片还详细解读了广为人知的北约第五条款(Article 5),即北约成员国之间的互相防卫条款。其实这个条款并不是一个自动触发的防御机制,而只是一个非常松散的约定。当有成员国被攻击时,其他成员国需要一起讨论如何应对,并没有规定其他成员国一定要参战,更别提宣布参战后也不一定会有具体的行动。历史上最著名的第五条款案例是 911 事件,美国以遭受攻击为由将北约拖入了阿富汗战争。
北约事实上提供的防御纽带并不是第五条款,而是强国对东部边境的军事部署,如德国在波兰边境的部署,这些实际的部署是才是北约共同防御的信心来源。
在冷战后的数十年和平中,欧洲国家陷入了和平的幻觉之中,相信美国的保护,逐步削弱了军备。俄罗斯对乌克兰的侵略战争暴露出欧洲军事力量的薄弱,集齐整个欧洲的军事工业都无法和俄罗斯抗衡。尤其是随着美国保守孤立主义逐步占据政治舞台,美国退出北约的可能性日益高涨,欧洲国家迫切需要在新的框架下重建军事力量。
北约为欧洲带来了近 70 年的和平,如今战火重回欧洲,未来仍充满变数。
- Youtube
- Summary by AI
详细介绍了世界上最大的军事组织(北约)的前世今生。二战后为了预防下一场战争,西方联盟成立了北约(North Atlantic Treaty Organization, NATO),苏联成立了华约(Warsaw Treaty)。冷战后苏联解体,华约组织也随之解体,大批从苏联独立出来的东欧共和国因为担忧俄罗斯帝国主义的威胁,纷纷加入北约,导致北约的范围不断东扩,反而成为俄罗斯帝国主义侵略行动的借口。
本片还详细解读了广为人知的北约第五条款(Article 5),即北约成员国之间的互相防卫条款。其实这个条款并不是一个自动触发的防御机制,而只是一个非常松散的约定。当有成员国被攻击时,其他成员国需要一起讨论如何应对,并没有规定其他成员国一定要参战,更别提宣布参战后也不一定会有具体的行动。历史上最著名的第五条款案例是 911 事件,美国以遭受攻击为由将北约拖入了阿富汗战争。
北约事实上提供的防御纽带并不是第五条款,而是强国对东部边境的军事部署,如德国在波兰边境的部署,这些实际的部署是才是北约共同防御的信心来源。
在冷战后的数十年和平中,欧洲国家陷入了和平的幻觉之中,相信美国的保护,逐步削弱了军备。俄罗斯对乌克兰的侵略战争暴露出欧洲军事力量的薄弱,集齐整个欧洲的军事工业都无法和俄罗斯抗衡。尤其是随着美国保守孤立主义逐步占据政治舞台,美国退出北约的可能性日益高涨,欧洲国家迫切需要在新的框架下重建军事力量。
北约为欧洲带来了近 70 年的和平,如今战火重回欧洲,未来仍充满变数。
- Youtube
- Summary by AI