有了密码学账号的个体
如何在网络空间活动?
直接给答案:当然是使用密钥签名一条消息,然后发送给目标
这里我选择使用json作为组装消息的格式
使用测试账号:
Address:o8Tjmes6iAukirYrBosSY9ntC5ahqz9ztK
PublicKey:0203411B7B6FA68C59DE640CA6E4648A60BFFA17020BAD5B47C7CDE58431D70D43
先构造基础消息
{
"Action":201,
"Content":"Hello world...",
"PublicKey":"0203411B7B6FA68C59DE640CA6E4648A60BFFA17020BAD5B47C7CDE58431D70D43"
}
Action是消息类型(为什么用Action不用Type,因为消息是个体在网络空间的活动)
Content是消息内容
PublicKey是消息生成账号o8Tjmes6iAukirYrBosSY9ntC5ahqz9ztK的公钥
使用账号o8Tjmes6iAukirYrBosSY9ntC5ahqz9ztK的密钥对消息签名
Signature:3044022018C52C995C094392113EC322E270EFAD854219701C53C6DEA791B0B139129A9E02203DF614DC1671A1E939B77AA840CE847E2DC39971FE2C9212A9C35C40A29283D0
对基础消息增加签名,可以得到
{
"Action":201,
"Content":"Hello world...",
"PublicKey":"0203411B7B6FA68C59DE640CA6E4648A60BFFA17020BAD5B47C7CDE58431D70D43",
"Signature":"3044022018C52C995C094392113EC322E270EFAD854219701C53C6DEA791B0B139129A9E02203DF614DC1671A1E939B77AA840CE847E2DC39971FE2C9212A9C35C40A29283D0"
}
可以使用0.1.0版的oxo-chat-client右小角的<校验Json>对这条消息进行校验
前面提到用公钥可以算出账号地址,
其次校验签名需要的三个参数是:基础消息、公钥、签名
因此在基础消息中加入公钥,第一可以表明消息的生成账号,第二可以用于后续的签名校验,是必要的
加入签名后的消息,修改任意一个字符都无法通过校验,
(这在数学上是可以被证明的,可以被证明的才是可信的,因此我信仰数学【In Math, I believe】)
由其不可改变的特性,我称其为原子消息。
使用这条原子消息,个体可以实现了“使用账号o8Tjmes6iAukirYrBosSY9ntC5ahqz9ztK在网络空间上进行了一次活动/操作”,其他个体无法使用账号o8Tjmes6iAukirYrBosSY9ntC5ahqz9ztK做出操作。