# Dyson快速撸毛教程 **Published by:** [Constantine](https://paragraph.com/@0xnan/) **Published on:** 2022-09-16 **URL:** https://paragraph.com/@0xnan/dyson ## Content 直达相关链接要详细做的朋友直接看下面的链接一步步跟着做。推特thread里是最基础的几步,截图和描述性的文字比较多,但操作其实很简单。按官方的说法这里是前3部分 https://twitter.com/Abrahamchase09/status/1570723379501735937 第4部分 https://medium.com/@dysonprotocol/how-to-read-from-storage-and-render-a-website-on-the-dyson-protocol-part-4-of-4-9f3e0d62f04c 第5部分 https://medium.com/@dysonprotocol/how-to-change-the-look-of-your-website-using-html-and-css-on-the-dyson-protocol-part-5-ab15260cec7a 目前只出了5部分,看第5部分结尾好像还有后续。干货部分这里我把重点的几步直接一次性做完,想干1000个号的朋友可以上。 关注下官方推特:https://twitter.com/DysonProtocol 加入官方discord:https://discord.gg/6sCCtDaH 准备keplr钱包,就是ATOM(阿童木)的钱包,这里不详细描述下载和安装。 登录:https://dys.dysonvalidator.com/ 后,keplr会弹出添加测试网络和允许访问的请求,approve即可。将keplr网络切到Dyson,复制钱包地址,类似 dys***** 。 到discord的test-airdrop频道提交钱包地址领水,等待5-30分钟不等,看管理员心情。测试开始如果因为测试页面比较卡,手动做了刷新页面的操作,记得查看下右上角钱包有个锁的标记是不是锁了,点一下即可,再继续进行测试。数据写入1. 左侧选择 Tx Builder , 选择 Dyson/sendMsgCreateStorage,可以看到下面有4个选框,分部选中,creator填自己的dyson地址;index填地址加斜杆加一个英文名(可随便取,但要记住,后面要用);datau部分随便写点内容即可,不重要;force选false。然后,拉到上面,点击“Sign Transaction”, 成功之后最下面会跳出一些返回信息(见本节最后一张图)。2. 到上面的下拉框选择 Dyson/QueryStorage ,勾选index,填入上一步index中相同的内容(地址/你的英文名),然后点击 Run Query。会反馈你上一步写入的数据内容(见本节第2张图下面部分)。3. 中间keplr钱包跳出确认的,点击同意(approve)即可。如果操作过程中页面长时间没有响应的,可以刷新页面,记得右上角解锁钱包。好了,如果上面2步执行没有问题。那我们的钱包和英文数据就写入系统成功了。代码4. 页面左侧选择 Your Script , 在右侧复制如下代码:import html from string import Template from dys import _chain, get_script_address, get_caller def say_hello(my_name: str): assert get_script_address() == get_caller(), "permission denied" data = "hello " + my_name print(data) # to help debug return _chain( "dyson/sendMsgCreateStorage", creator=get_script_address(), index=get_script_address() + "/Constantine", data=data, force=True, ) def get_greeting(): pass return _chain( "dyson/QueryStorage", index=get_script_address() + "/Constantine", ) def render_page(body: str): return Template( """<!doctype html> <html> <head> <title>Hello World</title> <meta charset=utf-8> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous"> <style> .heading { text-shadow: #FC0 1px 0 10px; } </style> </head> <body> <div class="container"> <h1 class="heading">Greeting!</h1> <p>$body</p> </div> </body> </html> """ ).safe_substitute(body=body) def application(environ, start_response): start_response("200 ok", [("Content-type", "text/html")]) greeting_data = get_greeting()["result"]["storage"]["data"] return [ render_page(html.escape(greeting_data)).encode(), ] 代码中将其中2处”Constantine”替换为自己的英文名,然后点击 “save” ,弹框确认, 稍微等一会,等页面最下方出现一些返回信息,基本可以判断为成功。 5. 浏览器新开窗口,打开https://dys1v45kjm2kuk6dju************xw8ya.dysonvalidator.com/ ,将dys1v45kjm2kuk6dju************xw8ya这一段替换为自己的dyson地址,即可得到类似如下页面。结束好了,至此官方文档中想呈现的结果我们已经做完了。想要详细了解具体原理的朋友请参照文章开头相关链接的步骤,一步步自己跟着做即可。看官方medium第5部分的最后还提到了后面会新出的关于编程循环部分的新内容,有兴趣的可以自己继续关注。 最后,可以关注我的twitter: https://twitter.com/Constantine_He ## Publication Information - [Constantine](https://paragraph.com/@0xnan/): Publication homepage - [All Posts](https://paragraph.com/@0xnan/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@0xnan): Subscribe to updates