作者文章归档:wj

用于半监督医学图像分割的多模态对比互学习和伪标签再学习


Multi-modal constrastive mutual learning and pseudo-label re-learning for semi-supervised medical image segmentation

用于半监督医学图像分割的多模态对比互学习和伪标签再学习

Journal: [ELSEVIER: Medical Image Analysis] (中科院分区一区top,jcr分区Q1) Author: Shuo Zhang, et al. Hebei University of Technology, China Code Link: https://zhengh

Read more

IPFS 星际文件系统


IPFS 星际文件系统

IPFS(Interplanetary File System,星际文件系统),是点对点(peer-to-peer,简称 p2p)文件共享系统。

IPFS = 公私钥 + Git + bit下载

IPFS 本质上是版本化的分布式文件系统,能够接收文件并管理它们,也可以把它们存储在某个地方,然后随着时间的推移,跟踪它们的版本。IPFS 也记录了这些文件在网络中的移动方式,因此,它也是个分布式文件系统。

IPFS组成部分

分布式哈希表DHT(承担路由功能)

代码演示:https://gitee.com/wujian2023/go-libp2p-dht-demo.git

哈希

Read more

分布式哈希表DHT


哈希表 是一种数据结构,它以键值对来存储信息。

在分布式哈希表(distributed hash tables,简称 DHT)中,数据分布在计算机网络中,以便有效地协调以实现节点之间的有效访问和查找

DHT 的主要优点在于去中心化、容错和可扩展性。节点无需中心协调,系统能够可靠地运作,即使节点发生故障或下线。并且,DHT 能够扩展以容纳数百万个节点。基于这些特性,使得 DHT 比中央服务器的结构更具有弹性。

分布式散列表本质上强调以下特性:

  • 离散性:构成系统的节点并没有任何中央式的协调机制。
  • 伸缩性:即使有成千上万个节点,系统仍然应该十分有效率。
  • 容错性:即使节点不断地加入、离开或是停止工

Read more

区块链原理及代码实践9-PoS算法


POS 共识算法

1. POW有什么问题?

PoW其实就是由所有的节点相互竞争,提交一个难于计算但是容易验证的计算结果,任何节点都可以验证这个这个结果的正确性。但是,

  1. PoW极度浪费算力,只有挖出区块的节点算力有效,其他节点算力都作废。
  2. PoW除了使恶意攻击者不能轻易地伪装成几百万个节点和打垮比特币网络,并没有更多实际或科学价值
  3. 随着比特币产量的不断降低, 矿工人数也会越来越少, 比特币网络的健壮性会越来越低。

鉴于以上问题,POS股权证明诞生了。

2. POS股权证明

权益证明( Proof of Stake,PoS) ,最早在 2013 年被提出,最早在 Peercoin 系统中被实

Read more

比特币原理及其代码实践8-比特币网络


引言

​ 我们所构建的原型已经具备了区块链所有的关键特性:匿名安全随机生成的地址(公私钥加密)区块链数据存储(key-value存储)工作量证明系统(pow)可靠地存储交易(MerkleTree)

​ 尽管这些特性都不可或缺,但是仍有不足。能够使得这些特性真正发光发热,使得加密货币成为可能的,是网络(network)

​ 你可以将这些区块链特性认为是规则(rule),类似于人类在一起生活,繁衍生息建立的规则,一种社会安排。区块链网络就是一个程序社区,里面的每个程序都遵循同样的规则,正是由于遵循着同一个规则,才使得网络能够长存。类似的,当人们都有着

Read more

比特币原理及其代码实践7-Merkle树


回忆:前面说过,比特币交易的解锁和上锁其实是一种基于堆栈的脚本语言,大家可以想一下,这种脚本语言还能干什么?

比特币的脚本语言启发了太坊创始人Vitalik Buterin(那年他20岁)创建以太坊,开发了智能合约。

全节点和轻节点

因为比特币的去中心化特性,网络中的每个节点必须是独立,自给自足的,也就是每个节点必须存储一个区块链的完整副本

随着越来越多的人使用比特币,这条规则变得越来越难以遵守:因为不太可能每个人都去运行一个全节点。并且,由于节点是网络中的完全参与者,它们负有相关责任:节点必须验证交易和区块。另外,要想与其他节点交互和下载新块,也有一定的网络流量需求。

对这个问题也有一个解

Read more

比特币原理及其代码实践6-交易签名和解锁


实现签名

交易必须被签名,因为这是比特币里面保证发送方不会花费属于其他人的币的唯一方式。如果一个签名是无效的,那么这笔交易就会被认为是无效的,因此,这笔交易也就无法被加到区块链中。

思考:哪些数据需要签名?

  1. 之前交易的某个输出的公钥hash,也就是我们钱的源头
  2. 当前交易的全部输出,也就是我们把钱转给了谁

签名在哪个地方?

签名在当前交易的每一个输入

伪代码:

func (tx *Transaction) Sign(privKey ecdsa.PrivateKey, prevTXs map[string]Transaction) {
    ...
    //针对每一个输入Vin
   

Read more

2023-3-22 使用智能合约创建数字孪生体,并实现访问控制


思考:使用智能合约和DHT,而不使用中心化后台和数据库的情况下,如何创建数字孪生体?

  • 智能合约可以看作是一个计算工具,当作后台使用,可以进行逻辑处理和存储简单的数据。
  • DHT可以看作一个文件服务器,用于存储智能合约无法存储的大型数据。

创建数字孪生体的步骤?

  1. 对称加密(AES_key)数字孪生体的数据,并上传到DHT,并返回DHT_key。
  2. 创建两个智能合约:
    1. spec智能合约,用户存放数字孪生体的元数据,包括上面DHT_key。
    2. auth智能合约,存放数字孪生体的role和permission,并初始化权限设置。
  3. 将用户的公钥+AES_key加密,并根据用户地址生成访问权限数组,存

Read more

2023-3-14 区块链链外数据存储和访问控制 思考


阅读:基于区块链的安全数字孪生信息管理 《EtherTwin: Blockchain-based Secure Digital Twin Information Management》

区块链和任何系统融合会带来可追溯不需要中心可信节点的优点(相较于传统第三方信任机构),但也会带来一些需要解决的问题:

  1. 数据如何存储
  2. 如何进行访问控制

区块链如何存储链外数据??

一种常见的方法是使用分布式哈希表 (DHT),因为它们非常适合分散式范例。

数据项基于路由层在网络中进行内容寻址和复制。

Swarm 等现代 DHT 基于已建立的安全 DHT 路由技术 S/Kademlia Baumgart 和

Read more

比特币原理及其代码实践5-地址


review:UTXO和余额模型到底有没有区别?

有,举个例子,比如小红转我80元,小绿转我20元,我再转50元给了小黑。

UTXO模型可以明确的告诉我,我转给小黑的50元到底是来自小红给我的80元加找零,还是小绿的20元加上小红给我的80元加找零。

余额模型却无法做到可追溯,因为我转给小黑50元,是我的余额减50,小黑的余额加50,然后产生一笔交易记录(我->小黑:50元),不能确定我转出去的50来自谁。

引言

在比特币中,没有用户账户,不需要,也不会在任何地方存储个人数据(比如姓名,电话,身份信息等)。

但我们必须要能够实现交易的输出者可以使用这比交易,用官方的话来说,就是你拥有在这

Read more