The Nautilus is diving. Destination: Deep Sea of AI+Crypto The navigation log is being made public... @sranchxyz

AI&Blockchain
We have officially launched the new brand: StockRanch.
We have launched a brand-new brand: StockRanch. The new token $SRanch will be launched on the Robinhood chain. The specific launch rules shall be subject to the official announcement.
2
1
4
90
The new version #StockRanch Demo data is now available. Please feel free to try it out and share your feedback. test.sranch.xyz
5
5
17
1,006
Yangniu is currently being upgraded to become a stock trading game. The captain is conducting the final checks and the ship will soon surface.
3
7
16
1,020
Nemo retweeted
There are 18 minutes left in the countdown. A huge train carrying 12 G1 cows is about to depart. Passengers, get ready to board the vehicle. yangniu.app/#/battle/2
3
6
16
713
牛熊大战,今天上线。 这个名字起得早,可设计的第一稿跟牛市熊市没有关系:熊的点数对门槛,再乘一个随机数。 我们给它写攻击测试,想证明它打不穿。 结果测试说:随机数挡不住用钱买确定性 —— 把点数买到门槛的 1.25 倍,胜率就是百分之百。 所以那一稿没有上线。随机数整个删了,胜负交给价格。 你可以花钱买点数,但你没法花钱把特斯拉买到跌破线。 现在一张桌子是这样的: 开桌的人押一池币,挑一只链上的美股代币当标的,在现价下面画一条线。 持熊的人付入场费上桌。 时间到,读价格 —— 守住线,入场费归守方; 跌破线,熊开始分奖池,跌得越深分得越多,跌到底拿满。 线下面是一段斜坡,不是悬崖。 差一丝就整池换手的设计最招人砸盘; 改成斜坡以后,多推一点只多拿一点,操纵退化成一笔普通的买卖。 持牛是做多,持熊是做空。 牧场的产奶本来就是一个长仓,熊第一次成了它天然的对冲。 这次上线的四件事: 一、押币。 奖池可以押币:$养牛、USDT,还有 TSLAB、NVDAB、AAPLB、QQQB、SPCXB、GOOGLB 六只美股代币。 押什么币和赌哪只标的是两回事 —— 押 USDT 赌特斯拉,可以。 也可以直接押牛。 二、七档时长。 6 小时、12 小时、1 天、2 天、3 天、7 天、15 天。 美股休市的时候,链上的美股代币照样在成交,价格照样会动。 6 小时的桌子,一个晚上就能分出胜负。开哪一档,是玩家的事。 线下面那段斜坡跟着时长走: 6 小时那档,跌破线之后再跌 2.5% 熊就拿满;15 天那档要再跌 18%。 时间越长价格走得越远,坡就放得越缓。 每一档都能跟庄。开桌的人不用一个人扛一整桌。 三、自动结算。 到点得有人去读价格、去结算。这个按钮谁都能按, 可按一次的奖励不到一美分 —— 光靠路人,没人按,桌子就只能过期,熊白买了票。 现在接了 Flap 的 Trigger Service:时间一到,它来叫醒合约。 它只是替人按按钮。它停了、没钱了,任何人照样能手动按。 四、为什么有上限。 现在每张桌子的奖池,大约 150 美元封顶。看着小气,是故意的。 结算价读的是链上池子的时间加权均价,而池子有深有浅。 奖池一旦大过「把最浅那只标的推下去」的成本,砸盘就成了稳赚的生意。 所以上限跟着池子深度走。池子深了,再往上放。 最后是那条老规矩: 管钱的合约没有 owner、没有管理员、不可升级。 对一个替别人保管资产的合约,升级钥匙就是保管钥匙。 奖池币名单需要有人管,这把钥匙在多签手里,不在任何一个人手里。 32 个合约已经在 BscScan 开源验证。 期权有赔有赚。先开一张小桌,看它打完一局。 🐮 yangniu.app
4
4
12
1,657
Bull vs. Bear Battle, coming soon...
1
9
585
牛熊大战即将揭晓。
Made with AI
2
2
10
1,468
养牛上线一周了。链上第一天有 23 个地址参与,一周之后是 24 个。也就是说,新增基本为零。 我想先花点篇幅分析为什么,因为这个诊断决定了后面所有事情的排序。如果诊断错了,后面做什么都是浪费。 问题出在哪 一个常见的解释是「功能还不够多」。我认为这个解释是错的。养牛该有的功能都有:买牛、喂草、配种、挤奶、挂卖,都能跑通。 真正的问题在机制本身。养牛目前的核心循环是:买牛 → 入栏 → 按权重分奶 → 拿奶买更多的牛。这是一个纯粹的单人循环。任何一个玩家的行为都不影响其他玩家,除了一个间接效应——他入栏会稀释所有人的权重占比。 值得注意的是,这个间接效应的方向是负的。在当前机制下,一个玩家对另一个玩家的唯一影响,是让对方赚得少一点。 这是一个相当糟糕的性质。它意味着系统里既不存在正向的社交动机(你没有理由希望别人来),也不存在任何有意思的对抗(别人来了也不会跟你发生关系)。你今天登录和这一周都不登录,结果一模一样。 我把这个问题叫做「没有对手」。它不是一个可以靠加功能解决的问题,因为它是收益结构的问题:所有参与者的收益函数彼此独立,只通过一个分母耦合。 从机制设计的角度,解法是引入第二类参与者,使得两类参与者之间的收益依赖既可以为正、也可以为负,并且这种依赖需要双方主动行动才会发生。 这就是熊。 已经做的部分 先说已经上线的那部分(9 月 14 日),因为它解决的是另一个层面的问题,不要和上面混起来。 牧场从一张表格改成了一片草地:牛站在上面走动、吃草、冒奶,断粮时整片地变黄,没入栏的牛站在围栏外面。最后这一条是有意的——「钱包里的牛不产奶」我在文档里写过一百字,效果远不如让那头牛站在栏外。 同一版里修了一个我自己造成的错误。市场原先默认按价格升序排列,这看起来合理,实际上是个陷阱:草料成本按头计,产奶收益按权重计。当天场上最便宜的一头权重是 24,比它贵 16% 的那头权重是 34.3。也就是说,后者的草料成本相同,日产高出 43%。默认按最低价排序,等于系统性地把新用户推向单位成本最差的资产。现在默认按「售价 ÷ 权重」排序,每张牛卡同时显示日产和日耗。 还加了一个按「平均每头牛权重」排的榜。当前榜首持有 146 头,均重 60.7;第五名持有 34 头,均重 97.7。这说明规模和效率在这个系统里是负相关的,而原来的界面完全没有体现这一点。 这些改动提高了信息的可读性,但它们没有、也不可能改变上面说的收益结构。 熊:牛的对偶 熊的设计目标是成为牛的对偶资产。具体的对应关系: 牛有代数、可繁殖、繁殖成本随存栏量指数上升;熊没有代数、价格固定、供给无上限 牛必须持续支付草料才能产出,停付即停产;熊没有任何持有成本 牛的收益是被动的,按权重线性分配;熊的收益默认为零,除非它主动做了某件事 第三条是全部关键。如果熊也能被动产出,那它只是一个参数不同的牛,两类资产之间不会产生任何博弈——你会得到两个互不相干的单人循环,而不是一个对抗系统。 需要说清楚的一点:「价格固定」是固定在 $养牛 计价,不是固定在美元计价。$养牛 下跌时熊的法币成本下降,上涨时铸造速度自然放缓。这是一个负反馈,我认为它是好的,但它也意味着熊不是一个会升值的资产,任何把它当作投资品的预期都会落空。 为什么钱要这么分 铸造一只熊需要支付 $养牛。这笔支出拆成两半:一半留在熊自己的奖池里,另一半通过 Ranch.depositFeed() 进入牛的经济体系(在那里它按已有的比例被销毁、注入奶池和金库)。 这个分配不是随便定的,它同时制造了两个方向的激励: 牛的持有者希望熊被大量铸造,因为对他们而言那是净流入。这一点很重要——它意味着现有玩家没有理由排斥新资产的发行,这是大多数「发第二个币」的项目会失败的地方。 熊的持有者从铸造的那一刻起处于净支出状态,必须通过后续的对抗行为把钱赚回来。这给了熊一个内生的行动理由。 换句话说,对抗的动机不来自叙事,来自资产负债表。这是我认为这个设计里唯一有点意思的地方。 前一批熊会带一个永久标记(编号、外观、以及后续围猎中的额外权重)。这是为了在「供给无上限」的前提下仍然制造一个早期参与的理由。我不确定这个标记的强度应该定在哪,这是还没算完的数之一。 熊上线之前必须先过一轮审计。我把这句写在这里是为了让它成为一个可检验的承诺:审计报告会先于熊公开。 熊的价格、创世批次的规模、单次围猎的上限,这些都还没定。在定下来之前,这一页不会出现任何数字——过早给出的数字会变成事实上的承诺。 我不确定的部分 上面这套设计建立在一个假设上:存在足够多的人,愿意为「主动去拿别人的东西」这件事本身付费。 我不知道这个假设是不是真的。它在别的链上游戏里有过成立的例子,也有过不成立的例子,而养牛现在的用户规模太小,没法从现有数据里推断。 所以熊的铸造本身就是对这个假设的一次检验。如果铸得动,说明假设成立,我继续往下做。如果铸不动,那大概率不是价格的问题而是假设的问题,我会停下来重新想,而不是靠调参数硬推。 后面所有东西都建立在这次检验上。这就是为什么它们只有先后顺序,没有日期。 再往后:需要一个结算场合 有了对立的两类资产,还需要一个让它们真正发生交互的机制。目前的方向有三个: 围猎。每天开一个时间窗口,熊可以集中攻击某个目标,牛方能看到进度并在窗口内反应。这里的设计要点是窗口必须足够长,让被攻击方有真实的应对机会,否则它退化成一个纯粹由信息优势决定胜负的游戏。 投料防御。牛方在窗口内追加草料可以提高防御。这让草料从一个纯成本项变成一个策略变量,同时给了牛方一个「主动行动」的选项——否则牛方在整个对抗里是完全被动的,那不成立。 天气。把 BNB 的涨跌映射成牧场里的环境状态,使得不同日子的对抗参数不同。这一条的作用主要是引入一个双方都无法控制的外生变量,避免博弈过快收敛到一个固定的均衡。 这三件事的共同点是:它们都要求双方在同一个时间点做出决策。方向是定的,参数一个都没定,真算完之后可能和上面描述的不太一样。 终局 我希望最终不再需要官方安排任何战场:玩家可以自己把自己的牛挂上去作为奖品,自行设定押注、赏金和规则。 到那一步,养牛就不再依赖我持续设计新玩法,因为玩法由参与者自己生成。这是我认为这类系统应该去的方向。 但我不知道能不能走到。写在这里是为了说明我的思路,不是承诺。 我判断错的三件事 下面是我已经公开宣布过、后来判断是错的三件事。我把它们留在这一页上,因为一个只增不减的路线图没有信息量。 认养送牛(9 月 11 日开始,9 月 14 日终止,实际发放 0 头)。规则是发 3 条推文、至少分散在 3 个不同日期,然后获得一头牛。 错误在于顺序:它要求用户先支付(三天的宣传成本),后获得(一头牛)。而在用户还完全不了解产品的阶段,他对这头牛的主观估值接近于零,所以这个交换在他看来是净亏损的。一般化的教训是:新用户的获取成本应该由项目方先承担,不能反过来。 巡逻。合约里本来就有一个函数:任何人都可以对断粮的地址发起结算,并获得该次结算奶量的 1%。我一度把它当作路线图的第三步,但我是在设计完之后才去估算量级的。 算出来的结果是:会断粮的主要是小额持有者,按当时的释放速率,单次赏金通常只有几美分,低于 BSC 的 gas 成本。也就是说这个机制在经济上不可行,无论它在叙事上多么合适。教训很直接:任何涉及经济激励的功能,应该先估量级再决定做不做。 金库长期挂平价牛。计划是让社区金库按「每点权重一口价」长期为市场提供流动性。但我后来发现市场上一直有玩家自己的挂单,货架从未空过——我在没有验证前提的情况下就开始设计解法。 这三件事给了我一个筛选标准,现在这一页按它来:只有能改变「是否有人参与」这个变量的东西,才写进路线图。其余的仍然会做,但那属于维护,不属于路线。 关于信任假设 有必要把这五个合约的信任假设讲清楚,因为我此前的表述不够准确。 $养牛、牛 NFT、牧场、交易市场、配种,到今天为止代码一行未改。这一点可以自行上链核验。 但「未改」和「不可改」是两件事。这五个合约是 BeaconProxy,信标的 owner 是 Flap 的 Guardian 地址(BSC 上为 0x9e27…8a4b,在合约里按 chainId 硬编码,没有 setter)。合约本身不含 owner。由此: 我没有任何升级权限; Flap 有; 我可以请求升级。事实上部署脚本里就写着,某些参数(比如 GenesisSale.genesisPayee)根本没有 setter,唯一的修改途径就是请求 Guardian 升级实现合约。这条路是设计时有意保留的救援通道,不是疏漏。 所以「合约永远不会改」是一个我无权做出的承诺。我此前那样写过,那是不准确的,现在更正。 我能做出的承诺范围要小得多,见下。 我能承诺什么 这一节只包含我自己有能力兑现的事。把无法兑现的东西写进承诺,第一次违约就会让整页的可信度归零,所以宁可范围小一点。 **后续所有玩法都按「不改动那五个合约」来设计。**熊活在一个独立的新合约里。除非出现必须救援的情况,我不会向 Flap 请求升级。 **不做任何关于价格或收益的承诺。**这一页没有出现过一个收益数字,以后也不会有。熊供给无上限、价格固定、可被任意空投,它是一张行动凭证,不是投资标的。 **不强制任何人参与对抗。**第一版熊攻击的是社区金库主动摆出的牛,不涉及玩家自己的持仓。若将来开放玩家的牛作为目标,必然是持有者自行挂出的。 **不做静默变更。**如果那五个合约发生升级——无论由谁发起——我会在这一页写明改了什么、为什么、什么时候。我无法阻止升级发生,但我可以保证你不会最后一个知道。
5
1
9
2,469
今天给「养牛」换了张脸。 打开自己的牧场,看到的不再是一张表格,是一片草地 —— 牛在上面走,停下来吃草,偶尔冒出一滴奶,飘上去的数字是那头牛自己的日产。 断粮的时候,整片地会黄下去。 还没入栏的牛,站在围栏外面的空地上 —— 「钱包里的牛不产奶」这句话,写十遍不如让它站在那儿。 没有用 3D。 牛还是链上 CowArt 画出来的那张脸,你在 NFT 市场看到的和这里看到的是同一头。 整个场景层 4.5 KB,零新增链上请求。 顺手修了一个我自己都没发现的坑: 交易市场原来默认按「最便宜」排。而现在场上最便宜那头权重 24, 贵一成六的那头权重 34.3 —— 两头吃一样多的草料,日产差四成三。 现在默认按性价比排,每张牛卡上也写清了日耗。 还加了个效率榜:榜首养 146 头,平均每头 60.7;第五名养 34 头,平均 97.7。 养得精的人,在那个榜上赢养得多的人。 🐮 yangniu.app
6
3
17
1,498
Nemo retweeted
The enthusiasm was high among the people. Just 3 hours after the event began, the community treasury had received donations of 20 cows. Come and adopt a cow!
🐮 Adopt a Cow — pilot round is live Promote the game, and the community vault sends you a cow to start with. Every cow comes from community donations, not from us minting more — the contracts are frozen, we couldn't mint one if we wanted to. How it works: 1️⃣ Post 3 tweets across at least 3 different days, each tagging @yangniuapp with #CowRanch 2️⃣ Reply to THIS post with your wallet address and links to the 3 tweets 3️⃣ Once verified, a cow ships from the community vault No signature, no wallet connection, no gas. Stake your first cow for 7 days and you can claim a second (it uses no slot). 10 slots this week, opening Mondays. Tier depends on what's actually in the vault right now — shown live on the page, no guarantees. Rules, templates, live inventory, public record 👇 yangniu.app/#/adopt ⚠️ We will never DM you, and we will never ask you to send us anything.
2
5
13
879
2026-09-10 🏆 玩家主页 排行榜上点任意地址,进入站内的玩家主页,不再跳去区块浏览器。 概览:产奶榜名次 / 牛口榜名次 / 牛数与在栏数 / 产奶权重 / 占全网 / 日产 USDT / 存量上限 / 挂卖中 档位分布,以及他名下全部活牛(带完整筛选条) 牛详情页的「主人」和全网牛口卡片上的地址,同样可以点进去 名次直接取排行榜算好的那一份,不另写一套排序——两个页面永远显示同一个名次。 ⚡ 批量操作 「我的牧场」在场那栏多了个**「批量」开关**。打开后点牛头变成多选,出现操作栏: 4 已选 [全选] [清空] | [离栏] [挂配种] [挂卖] | [撤卖单] [撤挂种] 一次签名:钱包支持 EIP-5792 的话,N 笔打包成一次确认;不支持自动退回逐笔签名 批量挂卖每一行的价格都能单独改。默认是按每头牛权重算的建议价;整体调价 ±% 只动没手改过的行,「全部设为」才会覆盖手改的值,每行右边有 ↺ 单独还原 批量挂配种给一个统一价(种牛费本来就与牛无关) 挂卖中的牛会自动从「离栏 / 挂卖」里剔除,按钮上显示实际会执行几笔 逐笔模式下中途失败会如实说「完成 3 / 7 笔」,不会含糊成「批量失败」 屠宰没有做批量 —— 不可逆销毁,加上每日 10% 的额度限制,逐头确认更稳妥。 2026-09-09 ❓ 常见问题 新增「常见问题」页,20 问,中英双语。 站内:yangniu.app → 常见问题 站外分享:yangniu.app/faq.html —— 29KB 静态页,不用连钱包、不用加载整个应用就能读完 两份内容由同一份源文件生成,不会出现站内站外说法不一致。 🔎 筛选器 全网牛口 / 配种市场 / 交易市场 / 我的牧场,四个页面都能筛牛了。三页的维度是各自的,因为看牛的目的不同: 独有筛选排序全网牛口位置:牧场中 / 挂卖中 / 钱包中出生顺序 · 最新 · 奶量 · 档位配种市场状态:可借配 / 冷却中 / 歇业种牛费 · 档位 · 世代 · 性价比交易市场配种:可配种 / 冷却中最新 · 售价 · 奶量 · 性价比我的牧场状态:有奶待领 / 挂种中 / 离场中待领奶 · 奶量 · 最新 · 档位 几个说明: 交易市场的「性价比」= 售价 ÷ 产奶权重,哪头最划算一眼看到 配种市场没有「奶量」排序——借配拿走的是小牛,种牛自己产多少奶与你无关。换成了档位和世代:小牛档位由双方档位之和决定,小牛代数 = max(双方)+1 而每代权重 ×0.7,所以低代种牛更值钱。那里的「性价比」分母也换成了档位倍数 档位、世代两行是共用的;世代按钮只列数据里真实存在的代数 默认收起,收起时会把生效的筛选条件列在旁边 🥛 每头牛的产奶事实 牛详情页新增两个数,牛卡上新增一行: 日产奶(卡片 + 详情页):按当前奶池和权重占比算 存量上限(详情页):当前奶池 × 本牛占比,读作「哪怕从现在起一笔新交易都不发生,这头牛累计还能领到这么多」。这是上界,不是预测 屠宰可回收(详情页):直接读链上 quoteSlaughter 没入栏的牛显示的是「入栏后日产」,分母会把它自己算进去,不会高估。 🏷️ 挂卖建议价重做 原来的默认价是「全网配种费 × 5」——和这头牛本身完全无关,G0 彩虹和 G4 普通填同一个数,而两者产奶差 16.7 倍。 现在按优先级取第一个能算出来的: 回本口径:本牛日产奶 × 60 天 ÷ $养牛 单价(链上均价预言机) 市场可比:同档位挂单「每点产奶权重」中位价 × 本牛权重 繁殖成本:配种费 ÷ 100 × 本牛权重 三条都按本牛权重缩放。弹窗顶部还会摆出本牛日产、同档位最低挂单,都能一键填入;输入框下面实时显示千分位,避免少打一个 0。 📊 排行榜 新增排行榜页,两个榜: 产奶榜:只算质押在牧场里、且没断粮的牛的有效权重——这就是链上分奶用的那个分母 牛口榜:名下全部活牛,钱包里的、挂卖的、牧场里的都算 带日产 USDT 估算、自己的行高亮、榜外也会单独显示你的真实名次。数据全部前端聚合,不需要索引器。 🐛 修复 点屠宰白屏:MAX_SLAUGHTER_BPS 是 uint16,前端拿到的是 JS number,和 bigint 相乘直接抛异常把整个页面炸掉。已修,并加了全局错误边界——这类问题以后不会再表现为白屏 每次交互连弹两次钱包:没做在途去重 页面自动刷新时牛会消失一下:公共节点限流导致一次批量读里有一条失败,前端就当没有牛了。现在读失败会沿用上一次成功的结果 冷却中的牛点不动却没有任何反应:现在会说明原因(断粮 / 离场中 / 冷却还剩多久),三条与链上的前置条件一一对应 盲盒和配种订单过期后可以「重排」:区块哈希只保留 256 块,过期的单子现在能重新排一个目标块,不用干等 roi.html 在线打开中文乱码(缺 charset 声明) 🎁 创世直售入口收起 100 张已售罄,导航里不再显示。手里还有没开的盒子的话,入口会自动出现。
5
1
15
2,544
2026-09-11 🎁 认养一头牛 新增 yangniu.app/#/adopt:做够宣传,社区金库送你一头牛。 金库库存实时公开——直接读链(CowLens.tokensOfOwner + Ranch.stakedCowsOf),各档位各几头一目了然。不承诺档位:从库里有什么发什么。库存见底时所有人自己看得到,不用发公告解释为什么暂停 报名不签名、不连钱包、不花 gas:发够 3 条推 → 在官推置顶的活动帖下回复地址和推文链接 → 完事。身份链条本身就闭合了(X 账号 → 他发的推 → 他的回复 → 他的地址),不需要再用签名证明地址是谁的。申请的人恰恰是还没有 BNB 的新人,让他先去搞 gas 才能报名,这个活动就没意义了 第二头的条件是第一头入栏满 7 天,页面自己读 Ranch.stakes 算进度,不用人工再审一次。第二头不占名额,也不升档 素材模板 7 条,一键复制,中英各一套配图可下载。顶部写死一句:这是素材不是范文,逐字复制会被拒;有自己的截图永远优先用自己的截图 公示名单随前端发布,每条都能拿 tx 去区块浏览器自己核。零后端、零索引器——审核是人工的,但过程是公开的 首轮是试运行轮:9/14 开轮,每周一 10 个名额,9/30 收尾;10/1 起正轮恢复 20 个/周。每月开一轮,老玩家可以一直参加,但复领要求此前每一轮领到的牛全部仍在你名下、且在栏——想一直领,就得一直把之前的牛养在场里。 入口在菜单最上面;一头牛都没有时,「我的牧场」会直接把它摆出来。 🤝 转赠 牛和 $养牛 现在都能在站内直接转给别人。 在栏的牛也能转。 链上其实没有这条路:牛的 owner 是 Ranch,而 Ranch 只有两个出口——unstake 的收款人写死是 msg.sender,releaseForSale(cowId, to) 又 require(msg.sender == market)。合约已冻结,加不了新出口。所以前端把它拆成链上真正要走的那几笔一次打包发出去:牛在哪实际执行钱包里transfer在栏unstake → transfer挂卖中cancel → unstake → transfer钱包支持 EIP-5792 的话是一次确认;不支持就逐笔,顺序不会乱。离栏会结算一次奶,钱进「已结算未提取」不会丢,但那头牛从此不再产奶——弹窗里会说清楚。 $养牛 钱包对钱包转账不抽税。 Flap 的税只在对着池子买 / 卖时触发,钱包之间不经过池子。 四层防错,因为转账不可撤销:格式不对直接拦 大小写混写但 EIP-55 校验不过的地址一律拦下——那几乎一定是手抄错了一位 零地址拦下,销毁地址给红色警告 项目自己的合约地址全部拦下。这一条不是多余的:Ranch.onERC721Received 是 pure 的、无条件返回 selector,也就是说把牛裸转到牧场合约会成功,但 stakes[] 里没有记录,之后 unstake 要求 s.staker == msg.sender 而它是 0 地址——这头牛就永久卡死了。想入栏必须走「入栏」按钮 🐮 社区金库 0x0EAFc380AE62ba62A7d96f4de377a2c400DA0c4D —— 公开征集捐赠的牛与 $养牛,用于社区活动(认养送牛的库存就来自这里)。 菜单里金色高亮单列一行,和上面那些「只是给你核对用」的合约地址明确分开——它是唯一一个会让人往里转钱的地址 转赠弹窗里有「🐮 社区金库」一键填入,不用手抄 站上显示的地址是唯一可信来源。 我们永远不会私信你,也永远不会要你转任何东西;评论区和私信里出现的任何其它地址都是假的
4
2
6
1,145
昨天「养牛」下水,今天 $牛来 靠岸。 审计报告改到第 19 版才敢发;六个合约里五个连 owner 都没有——上线那刻起我自己也改不动了。 交易税 → USDT 奶池 → 只分给还在牧场里的牛。领奶可换 $牛来。 不预测价格,规则都在链上。 yangniu.app
New ticker on the board: 牛来 Binance will list 牛来 with a Seed Tag applied. More info → binance.com/en/support/annou…
1
2
11
665
Cow Ranch launched today. A few hours in, here's what the chain says — not what I say. 174 cows already on the ranch. 9,905 USDT in the milk pool. Day one, and every dollar of it is trading tax — swapped to USDT on-chain, paid only to cows that are actually in the ranch. 1,415 USDT released per day. The pool drips over a week instead of dumping at once, so today's volume feeds the herd all week. Breeding fee already at 97.2K $养牛. It climbs as calves are born — the earliest breeders got the cheapest calves. No treasury wallet feeding this. No emissions. Tax in, milk out, and the split hardcoded where anyone can read it. Day one of a ranch is just cows and grass. The rest is time. yangniu.app
3
3
15
1,959
0xBe11b6E6a1708a6d8Eb068943cbAfD47E40e7777
9
15
3,960
At first, I thought this would be a simple audit. I thought it went like this: submit the code, wait for the report, fix a few small things, get the badge, put it on the site. As of today we've been sent back to the dry dock 23 times. It isn't over. This is the second ship I've built. The first one was Ensoul. It never found its waters. I'm not going to pretend that wreck taught me "audits matter" — it taught me something else. But this time, every inspection that could be done before leaving port, I did. Not one skipped. Two tracks: · Flap's internal audit: 7 rounds, complete · Paid audit: 16 rounds, still running The worst single round came back with 18 findings. Four of them High. I was relaxed when the first report came back — 6 findings. Didn't look bad. Fixed them. Round two: 4. Fixed those. Round three: 1. Round four: 1. Round five: 1. Round six: 0. I thought we were ready to sail. Round seven came back with 3. Same code. I hadn't changed a single character. That happened twice more. So far I've received four "zero findings" reports. Every time I thought it was over. Every time there was more. It frustrated me at first. Then two things became clear. One: a clean inspection isn't a clean hull. It only means nothing was found this time. Two, and this matters more — what actually reassured me wasn't the zero-findings report. It was the ones after it that found something. Proof they were pulling up the planks again every round, not stamping a form. There was a rule in the submission process whose weight I only understood after being sent back once: Along with the code, you submit a plain-language description of what the contract does. Any implementation that doesn't match the description counts as a bug. Which means you can't be vague. "Tax gets distributed to holders" — not good enough. How much? To whom? When? Who can change it? Leave something out — behaviour in the code but not in the doc — that's a finding. Get it wrong — code and doc disagree — also a finding. Writing that document alone forced me to find several places where my docs and my code had drifted apart long ago. Some of what's actually been fixed so far — the ones you don't need to read Solidity to understand: · Someone could deliberately make the box-opening step fail, then reopen it in a block they'd already computed — free, unlimited rerolls on rarity · A seller could raise the price after you hit "buy," and your transaction had no price ceiling · An emergency exit labelled "anyone can use this" that, mathematically, could never actually be used · Several paths that would have locked funds away permanently, beyond anyone's reach The one that stung most was one I created myself. In one round I changed a mechanism. The comment said A. The code did B. The next round it came straight back at me. Patch one plank and the one beside it can split. I knew that, obviously. It lands differently when someone points at it. Someone will ask: why so many rounds? Because this ship was drawn from a blank sheet. Genetic inheritance for NFTs, staking that yields milk, a built-in market, a single fee hub, two-phase randomness — none of it forked from anything. And every original piece is water nobody has sailed before. That's the cost of building something original. Fork code that already works and has already been audited, and you don't need 23 rounds. You can ship in days. We're on round 23 precisely because every line is new. So let me say this plainly: We don't launch until the audit is finished. However many rounds that takes. I know that isn't the smart move in this market. A narrative lasts three days, a launch lasts a week, and if you're slow nobody remembers you. I'm not certain this is the right call. But it's the only way I know how to build a ship. I've never had an audit experience like this. Thank you to the reviewers at Flap, and to everyone on the paid audit side. They were serious and thorough — serious enough that I swore at my screen more than once, then went back and fixed it anyway. Flap is the most rigorous platform I've worked with. Not close. A ship doesn't get sound because you spent a long time building it. It gets sound because someone keeps knocking on the hull, again and again. If you also think these waters still need people building original things properly — the Nautilus is still in dry dock. Come aboard and take a look. @flapdotsh @eth_cedric @eth_cedric
3
6
5,718
一开始,我以为这是一个简单的审计。 我以为流程是这样的:交代码 → 等报告 → 改几个小问题 → 拿到那张图,贴在官网上。 到今天,我们回了 23 次船坞。 还没走完。 这是我造的第二艘船。 第一艘叫 Ensoul。它没能找到自己的海域。 我不打算假装那次沉船教会了我"审计很重要"——它教会我的是别的事。 但这一次,凡是能在出港前做完的检验,我一次都没跳过。 两条线: · 蝴蝶(Flap)内部审计:7 轮,已完成 · 付费审计:16 轮,还在走 其中最狠的一轮,一次回来 18 条问题,4 条 High。 第一轮报告回来的时候我还挺放松的——6 条,看着不多。 改完,第二轮 4 条。 再改,第三轮 1 条。 第四轮 1 条。第五轮 1 条。 第六轮:0 条。 我以为可以出港了。 第七轮回来,3 条。 同一份代码。我一个字都没改。 后来这件事又发生了两次。到目前为止我一共拿到过 4 份"零问题"的报告,每一次我都以为结束了,每一次后面都还有东西。 一开始这让我很烦躁。后来我想明白了两件事。 第一:一份干净的检验单,不等于船是干净的。 它只说明这一次没找到漏水的地方。 第二,也是更重要的——真正让我踏实的不是那份零问题的报告,是后面那些"又找出东西了"的报告。它证明对方每一轮都在重新翻船板,不是盖个章了事。 送审时有一条规则,我是被打回一轮之后才真正明白它的分量: 交代码的同时,要交一份用大白话写的功能说明。任何与说明不符的实现,都算问题。 它意味着你不能含糊。 "税收会分给持有者"——不行。分多少?分给谁?什么时候分?谁能改? 写少了,代码里有而说明里没写的,算问题。 写错了,代码和说明对不上,也算问题。 光是写这份说明的过程,就逼着我自己找出了好几处文档和代码早就不一致的地方。 这些轮次里被真正修掉的东西,挑几个不需要懂代码也能看明白的: · 有人可以故意让开盲盒那一步失败,然后挑一个自己算好的区块重开——等于免费无限重摇稀有度 · 卖家可以在你点下"买"之后抢先抬价,而你那笔交易没有价格上限 · 一条写着"任何人都能走"的应急出口,其实在数学上永远走不通 · 好几条会让资金永久锁死、谁也拿不回来的路径 最难受的一条,是我自己修出来的。 某一轮我改了一个机制,注释写的是 A,代码写的是 B。下一轮它被原样揪了出来。 补一块船板,可能会让旁边那块裂开。 这道理我当然早就知道,但被人当面指着鼻子指出来,感觉不一样。 有人可能会问:为什么要走这么多轮? 因为这艘船是从零画图纸造出来的。 NFT 基因遗传、质押产奶、内置市场、统一收费中枢、两段式随机——没有 fork 任何一份现成的代码。 而每一处原创,都是一片没人趟过的水域。 这就是原创的代价。 抄一份已经跑通、已经被审计过的代码,你不需要走 23 轮。几天就能上线,几天就能开盘。 我们走到第 23 轮,恰恰是因为每一行都是新的。 所以我想在这里把话说明白: 审计没走完,我们就不上线。 不管还要几轮。 我知道这在当下的市场里不是一个聪明的决定——热点三天,盘子一周,慢一步就没人记得你。 我也不确定这么做是不是对的。但我只会这一种造船方式。 这种审计体验,我是第一次遇到。 感谢蝴蝶(Flap)的审计同学,也感谢付费审计那边的每一位。他们非常认真,非常负责——认真到我好几次在心里骂了人,然后老老实实回去改。 蝴蝶是我见过最较真的平台,没有之一。 船不会因为你造了很久就自动变得结实。 它只会因为有人一遍又一遍地敲你的船板,才慢慢变得结实。 如果你也觉得这片海里还需要有人认真造点原创的东西—— 鹦鹉螺号还在船坞里,欢迎上船看看。 @flapdotsh @eth_cedric @webhogwatrs
1
3
1,943
We have not yet released the official CA; please refer to the official announcement for the formal release. 我们还没有发布官方CA,正式发布请以官方公告为准。
1
1
857
扔给了grok两张截图,它给做了个“养牛”dapp的视频,效果还不错,比当前的界面好看,可以做为以后界面升级改进的目标。✊ 合约审计已进入尾声,审计通过了就可以正式发布了,纯原创的养牛dapp,希望可以带给大家不一样的体验。
Made with AI
4
2
15
5,709
今天和 @flapdotsh 的合约审计人员一起审计了养牛dapp的合约,被他们的专业精神折服。 一共进行了3轮反馈和调试,提出了大量的问题和建议,这种特别的体验,在其它发射台绝对得不到。 非常感谢蝴蝶平台的协助 @eth_cedric @webhogwatrs
4
3
3,445