学习区块链的基础资料
Created|Updated|工程实践
|Word Count:30|Reading Time:1mins|Post Views:
《猥琐发育成区块链开发者》
普林斯顿的《Bitcoin and Cryptocurrency Technologies》课程
《精通比特币(第二版)》
Author: magicliang
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles
2018-08-29
以太坊深度研究合集(2017-2018 旧文整合)
本文整合了 2017 年 10 月到 2018 年 8 月间一系列以太坊学习与实战笔记,包括工作机制、Gas 系统、事务与消息调用、随机数问题、硬分叉、谢灵点应用、为什么以太坊不适合做联盟链,以及 CentOS 6.7 上 geth 私链搭建、web3 安装、solidity 智能合约部署等实战。三篇 2018-08-29 的"旧文一篇"已统一收录于第五至第七章,作者当时的"旧文回顾"语气一并保留。 一、概述 以太坊(Ethereum)是一台 transactional singleton machine with shared-state——事务性状态共享的单例机器。实际上就是逻辑上唯一,但物理上由多个节点维护的共识中的 world computer。这台机器的状态是由事务变迁驱动的: 以太坊的核心区别于比特币的设计点: 引入 EVM 与图灵完备的智能合约 账户模型而非 UTXO 用 Gas 系统作为算力定价与防滥用机制 默克尔帕特里夏树存储状态、事务和收据 “幽灵协议”(GHOST = Greedy Heaviest Observe...
2018-03-08
重放攻击问题
比特币靠不同的地址前缀可以规避重放攻击问题。 以太坊可以靠 EIP155 钱包来规避重放攻击问题。 何为重放攻击问题? 一个区块链有若干个测试网络。如果一套公私钥可以在不同的网络上通用,则可以恶意地把在测试网络中出现的 transaction 播放到主网上。如果在测试网络上有人从账户 A 转了一笔钱到账户 B,而账户 B 是一个傻瓜测试账户,私钥是由类似123456之类的种子生成的话。那么只要账户 A 在主网中的余额大于这笔钱,心怀恶意者就能把主网中 A 的钱财转走,从主网中的账户 B 里把钱取出来。即使心怀恶意者没有 B 的取款方法,也能让账户 A 蒙受资金损失。 所以不要跨网使用相同的公私钥对。
2018-08-29
使用 Truffle 来编译、安装智能合约(旧文一篇)
因为官定版本的 solidity 实在编译安装太费力了,放弃,改用 Truffle。 直接用 npm 安装: 1npm install -g truffle 创建新目录,初始化新目录: 123mkdir myprojectcd myprojecttruffle init 修改配置文件 truffle.js: 12345678910 module.exports = { networks: { development: { host: "localhost", port: 8545, network_id: "*", // Match any network id gas: 500000 } }}; 生成必须的智能合约源码和迁移脚本: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253...
2018-03-08
重新学习 Solidity
以下内容还是从 Solidity 文档里摘出来的。 智能合约入门/介绍 第一个基本的例子 12345678910111213pragma solidity ^0.4.0;contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public constant returns (uint) { return storedData; }} 一个 contract 可以被认为是一个类型。 默认的 unint 就是256位的。 storedData 可以被认为是 state variable,状态变量。在 Solidity 的概念里面,这个东西可以被认为是数据库里面的一个槽,可以被函数查询和修改。注意看它不是 public 的,所以没有合成方法。 访问状态变量不需要用 this前缀(在什么 scope 下都不需要吗?)。 ...
2018-02-20
闪电网络、侧链、隔离见证与大区块扩容问题
闪电网络 闪电网络的原理 闪电网络就是在链外专门设置一个通道(channel),所有的交易都在链上进行,只有最终结算在链上进行。这就好像我们的计算机体系结构里面加入的一个工作内存和主内存的 hiarachy。 过程描述如下: 假设我和你,咱俩人经常交易,于是就在闪电网络上开个通道,容量是2BTC; 通道里面AB在总量不超过2BTC的情况下随便相互收发,所有操作送到一个具有AB多重签名的地址,每次操作签名就好; 通道里面的操作没有手续费,因为真实的BTC在链上其实没动过,通道里面的操作本质上是只是对俩人那两个BTC份额所有权的交易; 等啥时候AB不想交易了,把隧道关闭,去真实的比特币主链上兑换一下自己在那两个BTC里的份额就好; 高手续费只发生在打开,或是关闭一个通道的时候。 为什么闪电网络会不安全 这种侧链的出现,必然会导致庞大的中间人出现: 网络上会演化出一些大的中间人节点,这些节点有足够多的BTC,足够的流动性,和足够多的通道数量,所以你再也不用担心高额的手续费,自己去找中间人等等一系列麻烦。 然而这些节点,和矿工不一样,他们并不和你直接交易BTC,他们更像是一种“第...
2018-03-01
IOTA
IOTA 简介 IOTA 是下一代(第三代)加密货币,只做货币,不做其他用途的链(?)。专注于解决机器与机器(M2M)之间的交易问题。通过实现机器与机器间无交易费的支付来构建未来机器经济(machine economy)的蓝图,即物联网 + 数字货币的经济生态。物联网天然就有分布式特性,很适合搞区块链。 德国团队创立,由德国政府资助的一个中心化的研究去中心化下一代加密货币的项目。团队成员的上一个作品是第一代 POS 货币未来币(NXT)。 IOTA 的发行量极大,IOTA总供应量为(3 ^ 33-1)/ 2 或2,779,530,283,277,761个。所有IOTA都是在初始块创建的,总数不变,也不用开采。IOTA初上市的时候只募集到五十万美金,所以早期投资者的投资回报极高。有意思的是,因为 IOTA 基金会是非盈利组织,他们甚至没有锁定货币,所以他们持有的百分之五的 IOTA 代币,还是其他投资者捐献给基金会用以维持基金会运行的。 IOTA 的优势是,免手续费且使用平行验证而提高了性能,胜过了手续费高而清算速度缓慢的比特币。但因为它的安全模型弱于比特币,所以没有在普通交易场景...





