Pysyft 3.0版本安装及入门教程(二)
在(一)里,学习了 Bob 节点 client 向 Node 发消息的过程。如果 Bob 向共享数据给其他 Node,该怎么办呢?下面将介绍该part。
1、首先要创建一个属于 Bob 的VM(VirtualMachine),由于这个VirtualMachine也是一个Node,所以它也要创建自己的client。在上一节里介绍了普通的client和root_client的区别,这里直接创建root_client。
bob_vm = sy.VirtualMachine(name="Bob's VM")
bob_vm_client = bob_vm.get_root_client()
这时,Bob就有了属于自己的两个Node,一个叫 Device,一个叫 VM。这两个Node都有自己的Client。但是两个Node之间并不知道彼此,他们仅有通向自己的地址。不妨打印一下看看。
print(bob_device_client.address.pprint)
print(bob_vm_client.address.pprint)
2、因为Device更高级,所以VM要在Device上注册。
bob_device_client.register(client=bob_vm_client)
弹出很多信息。可以看到有两类Message,一个叫 RegisterChildNodeMessage ,它被分配到 Device ;另一个叫 HeritageUpdateMessage。一旦 RegisterChildNodeMessage 被Device接受,它就会存储 Device 的地址,然后发送一条新的 HeritageUpdateMessage给原来的发送方。
*注:这个 HeritageUpdateMessage 并不属于应答报文,它是一个独立的。
有两点需要注意:
1)RegisterChildNodeMessage 会让Bob Device 存储一个展示 Bob’s VM 地址的入口
2)HeritageUpdateMessage 会让 Bob’s VM 更新自己的地址,使自己的地址包含 Device 的准确位置( SpecificLocation)。
后面的有机会再更吧,博主可能要换环境了…