区块链思维导图笔记

区块链思维导图笔记_第1张图片
image.png

备注


以上导图最上面是说的区块链发生的背景
左边是开发一个demo,会在文章最后面附一个基于以太坊的投票智能合约
下面是他的一些主要原理之类的,描述加密算法和p2p网络,还有科普。
右边是实战喽,主要是基于以太坊的,采用web3.js和轻钱包一起整合使用

科普

51% Attack(51%攻击)

当一个单一个体或者一个组超过一半的计算能力时,这个个体或组就可以控制整个加密货币网络,如果他们有一些恶意的想法,他们就有可能发出一些冲突的交易来损坏整个网络。

Address(地址)

加密货币地址用于在网络上发送或接收交易。 地址通常表示为个数字字字符。

Bitcoin(比特币)

Bitcoin是在全球对等网络上运行的第一个去中心化开放源代码的加密货币,不需要中间商和集中式发行商。

Blockchain(区块链)

区块链是一个共享的分布式账本,其中交易通过附加块永久记录。 区块链作为所有交易的历史记录,从发生块到最新的块,因此命名为blockchain(区块链)。

Cryptographic Hash Function(加密哈希函数)

密码哈希产生从可变大小交易输入固定大小和唯一哈希值。 SHA-256计算算法是加密散列的一个例子。

Ethereum(以太坊)

Ethereum是一个基于blockchain的去中心化运行智能合约的平台,旨在解决与审查,欺诈和第三方干扰相关的问题。

Hash(哈希)

对输出数据执行散列函数的行为。 这是用于确认货币交易。

Mining(挖矿)

挖矿是验证区块链交易的行为。 验证的必要性通常以货币的形式奖励给矿工。 在这个密码安全的繁荣期间,当正确完成计算,采矿可以是一个有利可图的业务。 通过选择最有效和最适合的硬件和采矿目标,采矿可以产生稳定的被动收入形式。

Peer to Peer(点对点)

对等(P2P)是指在高度互联的网络中,双方之间的去中心化互动或更多的互动。 P2P网络的参与者通过单个调解点直接相互协商。

Public Address(公用地址)

公共地址是公钥的密码哈希值。 它们作为可以在任何地方发布的电子邮件地址,与私钥不同。

Private Key(私钥)

私钥是一串数据,它是允许您访问特定钱包中的令牌。 它们作为密码,除了地址的所有者之外,都被隐藏。

Proof of Work(工作证明)

POW(Proof of Work,工作证明)是指获得多少货币,取决于你挖矿贡献的工作量,电脑性能越好,分给你的矿就会越多。

Proof of Stake(股权证明)

POS(Proof of Stake,股权证明)根据你持有货币的量和时间进行利息分配的制度,在POS模式下,你的“挖矿”收益正比于你的币龄,而与电脑的计算性能无关。

SHA-256

SHA-256是比特币一些列数字货币使用的加密算法。 然而,它使用了大量的计算能力和处理时间,迫使矿工组建采矿池以获取收益。

Smart Contracts(智能合约)

智能合约将可编程语言的业务规则编码到区块上,并由网络的参与者实施。

Solidity

Solidity是Ethereum用于开发智能合约的编程语言。

Transaction Block(交易区块)

聚集到一个块中的交易的集合,然后可以将其散列并添加到区块链中。

Transaction Fee(手续费)

所有的加密货币交易都会涉及到一笔很小的手续费。这些手续费用加起来给矿工在成功处理区块时收到的区块奖励。

Wallet(钱包)

一个包含私钥的文件。 它通常包含一个软件客户端,允许访问查看和创建钱包所设计的特定块链的交易。


RSA算法


区块链思维导图笔记_第2张图片
image.png
区块链思维导图笔记_第3张图片
image.png

投票合约


pragma solidity ^0.4.0;
contract voteDemo {

//定义投票人的结构
struct Voter{
    uint weight; //投票人的权重
    bool voted ;// 是否已经投票
    address delegate; //委托代理人投票
    uint vote; // 投票主题的序号
}

//定义投票主题的结构
struct Posposal{
    bytes8 name ;  //投票主题的名字
    uint voteCount; //主题的得到的票数
}

//定义投票的发起者
address public chairperson;

//所有人的投票人
mapping(address=>Voter) public voters;

//具体的投票主题
Posposal[] public posposals;


//构造函数
function voteDemo(bytes8[] peposposalName){
    //初始化投票的发起人,就是当前合约的部署者
    chairperson = msg.sender;
    //给发起人投票权
    voters[chairperson].weight = 1;
    
    //初始化投票的主题
    for(uint i = 0; i  winningCount ){
            winningCount = posposals[i].voteCount;
            winningid = i;
        }
    }
}


function winname() constant returns(bytes8 winnername){
    winnername = posposals[winid()].name;
} 
}

你可能感兴趣的:(区块链思维导图笔记)