科技隨筆
科技隨筆

| 科技閱讀 | 程式語言 | 理財規劃 | 工具推薦 | 音樂盛宴 | 生活雜談 | 科技隨筆中,不只有科技! 在這裡,我會隨筆記下科技閱讀、程式語言、理財規劃、音樂饗宴以及生活雜談等等內容。 邀請您在過程中與我一同分享也一同成長。 讓我們在人生的旅途中不斷學習,努力成為更棒的人吧~ 在其他平臺關注我: https://linkby.tw/itechnote.co

【区块链知识】代价昂贵的区块链聊天室? !

本文会让大家理解要怎么用区块链来传递文字,也会提到电脑是如何传递并识别人类语言的,最后带大家发送一笔交易,并在交易内塞入一段十六进位的文字做为Input data 存放到链上,让大家都能看到并尝试对它进行解码还原成人类看得懂的语言。

Wintermute 损失两千万OP 代币与失而复得

最近较常关注一些以太坊L2 的发展,包含Optimism 发行OP 代币等新闻,而大约一个月前发生一件很神奇的事情,我也不讲过程了那并非本篇的主题,有兴趣可以再看看当时的新闻以及后续大神们的解释。

总之Wintermute 被攻击者盗走了两千万颗OP 代币,大概过了几天后,攻击者发送了一笔交易给以太坊共同创办人Vitalik 本人,并在底下藏了一些东西,该笔链上交易数据的网址是: https://optimistic.etherscan.io/tx/0x48464e4a6459062ac07efb4959fe8a6f90843f74922e68f71a929b33969f8f37

往下拉点开「Click to see More」并且将Input Data 那串乱码下方的View Input As 从Default 切换成UTF-8,就会看到有句子浮现了!大意是拿走代币的攻击者发了一百万颗OP 代币与讯息,请Vitalik 帮忙验证地址,他后续会再归还一千八百万颗OP 代币(总共一千九百万颗) 给Wintermute。

这时候我才想到,对耶!以往我们在做转帐或是跟智能合约互动的时候,一切看起来就这么合理的这样过去了,但是每笔交易的后面都可以放一些转换成Binary data 形式的字串,这样不就可以在区块链上面聊天了吗! (很贵的聊天室?!)

电脑也能读懂文字? Binary data 是什么?

你曾经想过电脑如何认出我们撰写的中文、英文与符号吗?

事实上电脑只认识0或1无法理解人类的语言,若需要让电脑识别这些文字符号,就需要做一个转换,将这些内容转换为一种二进位的数据做储存,这个数据就称为Binary data。

这个转换也很好理解,人们定义了一张很大的表格规定哪个数字代表什么符号,以比较常见又很简单的ASCII Code 来看的话,A 可以被转换为65、B 是66、a 是97、b 是98…,转换成二进位的0 1 就是A = 1000001、B = 1000010 以此类推。

由于区块链上的这些杂凑函数都是用十六进位比较多,像我们的钱包地址也是一种十六进位的值(只会出现0~F的值),所以假设要送出“Hello world” 给对方,依照ASCII code 的对照表,我们可以得到一组十六进位「0x48656c6c6f20776f726c64」。

在以太坊上传送文字讯息

以太坊采用的编码由ASCII Code 演变出来的UTF-8,所以英文大小写与基本的符号都与ASCII 编码相容,不过UTF-8 能储存的位数更多,世界上大部分不同语言的文字都可以查到对应的编码。

在浏览器上使用Metamask 就可以做到文字传递,但我们要先把16进位资料打开,点选「设定」→「进阶」→「开启显示16进位资料」,就完成初始设定了。

接着我们需要先将要输入的值转换为UTF-8 对应的十六进位值,在交易的时候发送这一段内容,对方就可以透过这组十六进位的Input data 转换回人类的语言与符号。

除了英文以外,UTF-8 也支援中文字,所以只要上网找找「String to UTF-8」的关键字,应该可以找到一些可直接使用的线上转换器。

再来就是正常执行一笔交易,这笔交易的金额可以设定成0,并且将要传输的文字转换为UTF-8 后,前面加入0x 填入「16进位资料」中。

这里的例子我是打算填「hello world!」,经过转码后是「68656c6c6f20776f726c6421」,前面加0x 变成「0x68656c6c6f20776f726c6421」。

(底下的示意图少打了一个6,传输前有更正过但忘记重新截图了,懒惰的我决定直接延用它哈哈)

传送以后要等一下才会上链,到你使用的区块链对应的浏览器上查询你的钱包地址,以太坊就是etherscan、Polygon 就是polygonscan、测试网就是对应Testnet 的scan。

找到刚刚的交易纪录后,往下拉点开「Click to see More」并且将Input Data 那串乱码下方的View Input As 从Default 切换成UTF-8,就会看到刚刚传送的字串「hello world!」了哦!

于是这样就可以把区块链当成昂贵的聊天室了,但我想一般人正常应该不会想这样用…

目前想到可能的用途大概是希望传递一些公开又不希望被随意窜改的内文… 例如候选人的政见发布在区块链上,大家眼见为凭如果跳票的话就会在区块链上成为永久的笑话。

或是可以利用它来验证钱包地址是不是某个人的?很多人都说自己是中本聪,但其实要证明他是不是本人很简单,请他发送什么链上讯息到某个钱包地址就可以证明了。

如果你们看完关于区块链聊天室有什么其他想到的应用场景,欢迎在底下留言与我讨论。

另外我在思考区块链聊天室的过程突然想到,其实整个区块链提供的帐本与衍伸服务,应该也要算是一种云端服务吧! ! !但这好像又是另一个issue 了。


最后,谢谢你在百忙之中愿意抽空来花时间来看我的文章,如果还喜欢这些内容的话希望能获得你的追踪及小额赞助支持,让我更有继续写下去的动力,EVM 兼容钱包地址为0xae1dd06d57f582999a9c50b86ba913eecd7155ce。

也欢迎加入Line 社群Telegram 群组一起讨论相关话题

我们下次见噜o((>ω< ))o~

原文连结ITechNote 科技随笔

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论