liqwang.eth retweeted
TanStack Start 1.0 is officially stable! 🎉
A full-stack web framework for React and Solid, already used to build millions of apps, from Fortune 500 companies to your favorite tools and weekend projects.
tanstack.com/start
安全下车
15寸MacBook Air M4 24G+512G
2026年生产的所以预装的macOS 26,手动刷回macOS 15了
参考:depp.wang/2026/m4-macbook-ai…
liqwang.eth retweeted
Weakness and ignorance are not barriers to survival. Arrogance is.
@injective got hacked.
I joined forces with @S7iter_ to analyze the attack.
Injective binary options are zero-sum by design. Buy Q at price P and the long locks P * Q, the short locks (1 - P) * Q. Total collateral should stay equal to Q. This exploit breaks that invariant, then stops the normal refund haircut from putting it back.
The break is how a binary options market is bound to its insurance fund. market_id was hashed from fields concatenated with no separator and no length prefix: oracleType, ticker, quoteDenom, oracleSymbol, oracleProvider. Same byte string, two different parses.
Example: insurance fund uses ticker = X, quote = inj, oracle_base = USDC_DENOM + SYMBOL.
Binary options market uses ticker = Xinj, quote = USDC_DENOM, oracle_symbol = SYMBOL. Different objects, same market_id. An INJ insurance fund can sit on a USDC-denominated binary options market.
Attacker traded against themselves across subaccounts.
1) Open long + short at 0.10. Long locks 0.1Q, short locks 0.9Q.
2) Close the long at 0.90 with margin = 0. Gets ~0.9Q back (original margin + realized PnL).
3) Old short still has 0.9Q margin on the books. Open a new long at 0.90 with another 0.9Q.
4) Deposited 1.9Q total. Old long already took ~0.9Q out. Remaining positions still show 1.8Q refundable margin.
5) Market settles with no oracle price and hits the -1 refund path. Missing 0.8Q should haircut the leftover positions. Instead settlement tries to cover the hole from the attached insurance fund.
6) Fund is INJ. Deficit is USDC. Code treats the raw integer from the INJ fund as coverage for the USDC shortfall. Dust INJ is “enough”, haircut is skipped, remaining positions refund in full.
7) Withdraw the inflated subaccount balance.
One sampled USDC cycle: 44,099.025531 in, 62,666.979111 out. Extra 18,567.953580 is exactly the 0.8Q gap. Same loop on short-lived markets quoted in USDC, Peggy USDT, Noble USDC, and ATOM.
Create an INJ insurance fund that collides on market_id with a quote-denominated binary options market → 0.10 to 0.90 self-trades to manufacture a refund deficit → no-price settlement → INJ atoms cover a USDC/USDT/ATOM deficit by raw amount → withdraw.
github.com/InjectiveFoundati…
hi @al_f4lc0n 👀
I Saved Injective's $500M. They Pay Me $50K.
I like hunting bugs on @immunefi . I'm decent at it.
- #1 — Attackathon | Stacks
- #2 — Attackathon | Stacks II
- #1 — Attackathon | XRPL Lending Protocol
- 1 Critical and 1 High from bug bounties (not counting this one)
Life was good. Then I found a Critical vulnerability in @injective .
This vulnerability allowed any user to directly drain any account on the chain. No special permissions needed. Over $500M in on-chain assets were at risk.
I reported it through Immunefi. The next day, a mainnet upgrade to fix the bug went to governance vote. The Injective team clearly understood the severity.
Then — silence. For 3 months. No follow up. No technical discussion. Nothing.
A few days ago, they notified me of their decision: $50K. The maximum payout for a Critical vulnerability in their bug bounty program is $500K. I disputed it. Silence again. No explanation for the reduced payout. No explanation for the 3 month ghost. No conversation at all. To be clear: the $50K has not been paid either.
I've seen others share bad experiences with bug bounty payouts recently. I never thought it would happen to me. I can't force them to do the right thing. But I won't let this be forgotten.
I will dedicate 10% of all my future bug bounty earnings to making sure this story stays visible — until Injective pays what I deserve.
Full Technical Report: github.com/injective-wall-of…
现在 @Gate 的棋已经不好下了:
不赔,用户看到的是:出了事,平台第一反应是切割、质疑、站到用户对面,信任崩塌。
赔吧,外界又会解读成:官方自己承认风控和审核流程有问题,信任还是崩塌。
之前术层面犯的错,多说无益。此刻真正的解题关键,是怎么把“赔钱”这事的口径设计好。
如果我来操盘,死马当活马医,我会先借着链上侦探给出的信息,把矛头对准盗币黑产集团,明确摆出全力配合用户、警方和安全团队追查真凶的姿态。
同时,以人道主义关怀和用户保护为名,在资金完全追回前,由平台先行垫付一部分损失。
该口径的重点是:这不是承认责任,而是告诉市场,平台在极端事件里不会把用户一个人扔在原地。
调查需要时间,而时间有魔法,它可以让人忘记大部分事情。
只要你持续释放“事情正在被推进”的信号,最终吃瓜群众未必记得所有细节,但会大致印象会是:平台没有装死,用户利益也被放在了一个相对较高的优先级。
电视剧里的危机公关,演的基本都是深谙舆论的操盘手,在危机发生后,化身超级救火队长,挽狂澜于既倒,扶大厦之将倾。
而真实的商业世界里,善战者无赫赫之功。
一个真正高段位的市场操盘手,最重要的能力不是火烧起来以后冲进去当英雄;而是在别人只看到一丁点小火苗时,就意识到这东西如果不管,会烧成燎原大火,然后提前把它按灭。
可问题是,在一个藩王林立、各扫门前雪的标准企业组织里,这种人很难被识别,也很难被奖励。
因为他花了公司的钱、动了别人的资源、打断了原有节奏,最后换来的结果只是:什么都没发生。
而“什么都没发生”,在公司报表和绩效系统里,就不能算功劳,只能算成本。
这也是预防型人才的悲剧,他的成绩单是一场场“没有发生的灾难”。 没发生,就没人知道它本来会发生;没人知道,就没人愿意为它付费、升职、背书。
所以公司制天然更容易奖励那些解决大问题的人,而不是预防大问题的人。
可最讽刺的是,很多所谓“大问题”,本来都只是一些没人愿意提前踩灭的小火苗。
币圈交易所做的是信任生意。
最愚蠢的公关,就是在事实还没被第三方查清、证据链还没公开闭环,手里没有 smoking gun 的调查期间,就把屁股坐在了用户的对立面,开始对受害者进行有罪推论,让员工和吃自家广告的小 KOL 们一起阴阳用户,往「自导自演」方向上带节奏。
判断错了,你是要被钉上耻辱柱的 24K 纯小丑;
退一万步说,就算最后真被你说中了,又如何?
你怼赢的是一个用户,输掉的是所有旁观者对“我出事后会被怎么对待”的想象。
我和当事人 @jheioff 没有任何往来,看到被盗帖后,去翻了下他的历史 posts,基本都是交易类内容的转发;再结合他关注了我,初步判断是:这就是一个把推特当作学习金融/交易知识工具、和你我一样在努力赚钱养家的人。
这种画像的用户,上来不放预言家,至少也先发张好人卡再慢慢听发言吧?
innocent until proven guilty.
程序正义,是交易所应该给到每个用户的基本尊重。
今天发现Vibe Coding + 健身有点配啊,一开始看到这个项目还不理解
github.com/BotchetDig/workou…
泪目🥲
今天我少有的在人际关系上出现了情绪波动,很少写人的故事,作为心理上的记录和你们分享下我们房东的故事:
和房东的相遇:
2022年,女仆从语言学校升学之后,想要住个距离学校比较近的地方,因为是京都上学,所以最早就在京都找房子,但是京都的房子对外国人特别不友好,我们看了一圈房,终于看好了一个决定好了,但是发现我们是外国人就拒绝了,后来我们退而求其次打算找团地,结果团地要我们银行账户里有至少850万日元在里面才租给我们,我们感受到了侮辱,想想要不顺便体验下乡下生活,就试试出京都在滋贺找房子。
然后问了一圈有没有愿意让外国人住进来的房子,然后我们的房东出现了,他说对中国人有很好的印象,所以很欢迎,我们也没想到会遇到这样的房东,于是房子连照片都没看就定下来了。
本来要4个月的礼金敷金,我们只是习惯性试了下问问能不能便宜点,结果居然直接答应了半价。
交房子的那天,我们和房东就这样第一次见面了。
后续:
这个房子远远超出了我们的预期,租金才7万一个月,但是有一个非常精致的花园(相信你们从我的推文中已经看到了),能停下4辆车的车位。
而且我们也知道为什么要4个月的礼金敷金,因为房子彻底做了翻修,里面装了6个空调,对习惯性砍价这件事我们住进来之后其实是有一些愧疚的,有点自责被京都租房的体验刺激的有些刻薄。
疫情那段时间学校都是远程授课,加上我的工作性质所以我们是很闲的,于是我们的房东平时会开着车过来关心我们会不会遇到什么不方便的问题,然后和我们聊会天,通过聊天知道他曾经有儿子,但是因为意外走了,现在只剩女儿。
他曾经在4s店工作,退休后开了公司,建公寓做停车场,当房东赚钱,我们租的房子是曾经他的家,后来租给了我们前任租客,前任租客很不负责任,不仅家里养了很多猫,而且中途突然不交房租人就消失了,也导致这个房子闲置了好几年。
他对中国的好印象是30年之前去中国旅游,去长城的途中巴士爆胎了,然后过来补轮胎的居然是个女孩子,而且特别能干,他送了那个女孩子巧克力,女孩居然特别高兴的拥抱了他,这些体验加上那次他去中国玩的体验给了他非常好的印象,于是一直对中国人抱有好感。
我们通过日常的交流渐渐走的很近,也经常主动去他的事务所和他聊天。
对我签证的救命之恩:
入管因为我公司在东京,人在滋贺住,没办法去公司通勤把我拒签了,这个拒签特别恶心,因为我的工作是全日本范围做直播和拍视频,本来就没有上班打卡的必要性。
我们和房东聊天提到了这个事情,房东居然同意可以在租房合同中加上可以用来当事务所的覚書(简易的契约书)。
要知道,外国人在日本本来就特别难租到便宜还能用的办公室,让租给你一户建住宅的房东同意可以住宅兼用事务所是几乎不可能的事情。
虽然入管最后还是因为工作区域和生活区域没有用带锁的门隔开把我拒签了,但是房东听到后居然同意了我们可以加门
于是我被拒签后去了一趟泰国转了一圈,然后用上一次的材料复印件加上扇门照片,拿到了新的经营管理签证回到了日本。
最后的海外旅行:
通过聊天我们也知道,因为房东是泡沫期赚了钱,之后成功避险的人,他和他的老婆也喜欢旅行,所以去了世界很多很多地方,提到哪他都有一些见闻。
但是能看出来,30年前那次中国旅行给了他非常好的回忆,但是因为他已经80多岁高龄,没有旅行社愿意承担风险,所以他虽然想再去中国一次,但是现实很残酷。
房东实在是给了我们太多了,所以我们就在研究是不是可以满足他的这个愿望。
于是2024年6月,我们完成了他的愿望,从山东出发,中间体验高铁和绿皮车进北京,故宫和北京烤鸭巡礼,长城的巡礼(感谢当时在北京小伙伴还借我京牌的车自驾去八达岭重新开老大爷当年坐大巴的路线),自驾内蒙古,最后开到哈尔滨,两周时间让房东彻底体验了一下现在的中国。
只是我们没想到,这是房东最后一次出国旅行。
离别:
房东回到日本后的两年,出现了老年痴呆症状,渐渐腿脚也开始不好,他不再到我们住的地方找我们聊天,放弃了开车,也放弃了他最喜欢的门球。
每次去见他,都能看到他的房间渐渐被搬空,日本有一种文化是断舍离,还有老人认为自己时日不多,不应该给后代添麻烦时的【终活】
但是他总会翻开最后一次中国之行的照片和我们回忆,在中国买的冰箱贴也一直贴在他的柜子上。
我们很庆幸当时能抽出时间实现他的愿望,同时也担心是不是因为他实现了愿望感觉没什么留恋所以开始衰老。
后来发生的事情你们已经知道了,日本右翼占了上风,曾经这些开放,包容,阳光,给了我们非常多美好回忆的日本,只能在一些特定的角落里,还有我们的素材库中找到。
这样的环境虽然我们还想多陪陪孤独的房东,但是我们现在必须要迈出下一步开始另一个阶段人生的体验了。
只是希望今天这一面不是最后一面。
这就是我和我们房东的故事,我平时都是在写评测和技术分析还有经济相关的东西,太不擅长描述人的感情了,希望你们能看懂。
快点支持Windows啊😍
Computer use lets Codex work across your apps without taking over your Mac.
@AriX talks with @romainhuet about what changes when agents can click, type, and keep working in the background.



























