分类目录归档:分享

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


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

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

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

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

引言

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

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

Read more

属性基加密--用于细粒度的访问控制


属性基加密(Attribute-Based Encryption)

属性基加密的思想是让密文和密钥与属性集合和访问结构产生关联,当且仅当属性集合满足访问结构的时候,方能解密成功。

属性基加密分类

  • KP-ABE(key-policy ABE):(基于密钥策略的属性加密)是将策略嵌入到密钥中,属性嵌入到密文中。
  • CP-ABE(ciphertext-policy ABE):(基于密文策略的属性加密)是将策略嵌入到密文中,属性嵌入到密钥中。

关于KP-ABE

一些定义

- 双线性映射

- 访问树

KP-ABE算法详解

1. Setup

根据是否符合属性要求划分出两类公钥,符合属性时为Ti

Read more

Swarm Learning ---一种去中心化的分布式机器学习范式


群智学习blog

一、前言

精准医疗的目标是能快速准确地检测出患有严重疾病和异质性疾病的患者,而机器学习有助于实现这一目标,例如根据病人的血液转录组数据来识别是否患有白血病。然而,应用到实际还存在很多问题。基于人工智能(AI)的疾病诊断方法,本质上不仅依赖于适当的算法,更依赖于大型训练数据集。

由于医学数据本身是分散的,医疗机构本地的数据量通常不足以训练出可靠的分类器。因此,根据医疗数据构建出的模型,仅能解决本地问题。从人工智能角度,将各地医疗数据进行集中处理是更好的选择,但这存在难以避免的缺陷。包括数据流量问题,以及对数据所有权、保密性、隐私性、安全性和数据垄断等情况的担忧。因此,需要更有效

Read more

比特币原理及其代码实践4-交易(1)


交易(transaction)是比特币的核心所在。

在区块链中,交易一旦被创建,就没有任何人能够再去修改或是删除它。

比特币采用的是 UTXO 模型,并非账户模型,并不直接存在“余额”这个概念

余额需要通过遍历整个交易历史得来

比特币交易

Bitcoin - BTC Price, Live Chart, and News | Blockchain.com

我们可以在上面网站查看比特币的区块中的交易

那么大家可以想一想,在每一笔交易中,txin都会指向之前的某一比交易txout

在之前的交易中,txout的转账又来自txin

如此循环下去,是不是这比钱会有一个源头

这个源头就是coinbas

Read more

比特币原理及其代码实践3-本地存储


比特币如何存储数据

比特币使用 LevelDB来存储数据,这是一个本地存储的高效的key-value的数据库

Bitcoin Core 使用两个 “空间” 来存储数据:

  1. 其中一个 “空间”是 blocks,它存储了描述一条链中所有块的元数据(区块数据,最新的区块hash等)
  2. 另一个 “空间”是 chainstate,存储了一条链的状态,也就是当前所有的未花费的交易输出,和一些元数据

blocks 中,key -> value 为:

key value
b + 32 字节的 block hash block index record
f + 4 字节的 file

Read more

比特币原理及其代码实践2-工作量证明


工作量证明(proof-of-work)

哈希计算

获得指定数据的一个哈希值的过程,就叫做哈希计算。一个哈希,就是对所计算数据的一个唯一表示。对于一个哈希函数,输入任意大小的数据,它会输出一个固定大小的哈希值。下面是哈希的几个关键特性:

  1. 无法从一个哈希值恢复原始数据。也就是说,哈希并不是加密。
  2. 对于特定的数据,只能有一个哈希,并且这个哈希是唯一的。
  3. 即使是仅仅改变输入数据中的一个字节,也会导致输出一个完全不同的哈希。

Hashcash

比特币使用 Hashcash ,它可以被分解为以下步骤:

  1. 取一些公开的数据(在比特币中,它是区块头)
  2. 给这个公开数据添加一个计数器。计数器默认从 0 开始

Read more

比特币原理及其代码实践1-区块链数据结构


比特币原理及其代码实践1-区块链数据结构

Jeiwan/blockchain_go: A simplified blockchain implementation in Golang (github.com)

https://gitee.com/Oracion/go-blockchain-learning

引言:

区块链本质只是一个分布式数据库而已。

区块链具有去中心化(全节点保留所有区块)匿名(address(公私所生成的)和我本人没了联系)可追溯(UTXO)不可更改(merkleTree)的特点

那么这些特点是如何实现的呢??

如果从原理代码的角度,相信大家可以更好的理解这些特点。

Read more