🔍Blink是什么鬼?简单说就是利用钱包插件(比如Phantom、Backpack)对网页内容进行"魔改"渲染。用过「沉浸式翻译」插件的小伙伴应该懂这种感觉——它能无缝把翻译的中文嵌到英文下面。Blink也类似,只不过是将你的推文渲染成链上交互界面。沉浸式翻译插件的效果钱包渲染t
简单说就是利用钱包插件(比如 Phantom、Backpack)对网页内容进行"魔改"渲染。用过「沉浸式翻译」插件的小伙伴应该懂这种感觉——它能无缝把翻译的中文嵌到英文下面。Blink 也类似,只不过是将你的推文渲染成链上交互界面。
沉浸式翻译插件的效果
钱包渲染 twitter 的效果
重点来了:只有装了钱包插件的人才能看到这个效果哦, 其他人只能看到 url 本身或者是 fallback 的一个稍微好看的无法交互的效果~
这是一个 fallback 的效果, 还凑合, 起码比 url 纯文字效果好
想让你的钱包支持 Blink?按这个来:
所有魔法都有规则,Blink 的规则在这里: solan官方blink规范
但有个限制:不是随便一个URL都能被渲染!因为怕你被诈骗,你得先去 Dialect 注册过审才行。不然你发的URL就只是个寂寞的链接..., 为此我看了 backpack 插件源码, 让 AI 帮我看到底是哪限制的, 这里就是判断是否已经是注册的合法 url
搞个后端服务,什么语言开发都可以, 准备两类接口:
返回一个JSON告诉钱包该怎么渲染。举个质押的例子:
// 这个 json 里面的 field 都是页面上的元素
{
"title": "Stake-o-matic", // 标题
"icon": "<url-to-image>", // 背景图片
"description": "Stake SOL to help secure the Solana network.",
"label": "Stake SOL",
"links": {
"actions": [ // 按钮1
{
"label": "Stake 1 SOL",
"href": "/api/stake?amount=1" // 后端接口
},
{
"label": "Stake 5 SOL", // 按钮2
"href": "/api/stake?amount=5"
},
{
"label": "Stake", // 按钮3
"href": "/api/stake?amount={amount}",
"parameters": [ // 按钮3前面的表单项, 可以让你输入数字
{
"name": "amount",
"label": "SOL amount"
}
]
}
]
}
}
每个action对应一个,返回未签名交易的base64: 还记得 solana 这个经典的交易结构吧, 就是组装这玩意, 只不过是未签名的, 因为你是要让钱包提示出来后, 用户自己签名
{
"transaction": {
"message": {
"accountKeys": ["3z9...", "3z1...", "111..."],
"header": {
"numReadonlySignedAccounts": 0,
"numReadonlyUnsignedAccounts": 1,
"numRequiredSignatures": 1
},
"recentBlockhash": "Dzf...",
"instructions": [
{
"accounts": [0, 1],
"programIdIndex": 2,
"data": "3Bx..."
}
]
},
"signatures": []
}
}
全绿就代表 ok
具体渲染过程:
用 Dialet 官方例子 做实验时遇到的坑:
anchor deploy
到 devnet 死活不成功,最后把代码copy到 playground 才发布成功getLatestBlockhash
风控, 可能是 devnet 的限制后端代码就不贴了, 没啥意义, 就是纯组装 json 结构, 难点是小白不知道咋组装 我把 这次一定好好学 Solana (5) : 开发一个有PDA的简单合约 改成了 PDA 支持 Blink 的版本,需要自取~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!