block chain

区块链杂记

节点

区块链是分布式的,所以新加入节点,需要找到其它节点,这时候就是需要有种子节点(也就是发现中心了)

1
2
3
4
5
6
seed.bitcoin.sipa.be
dnsseed.bluematt.me
dnsseed.bitcoin.dashjr.org
seed.bitcoinstats.com
seed.bitcoin.jonasschnelli.ch
seed.btc.petertodd.org

用golang写个获取节点列表的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
func LookUpSeed(seed string) {
ips, err := net.LookupIP(seed)
if err != nil {
panic(err)
}
for i, _ := range ips {
fmt.Println(ips[i])
}
}

func main() {
LookUpSeed("seed.bitcoin.sipa.be")
}

区块链中有不同类型的代币,但通常分为两大类:

  • 可互换代币。 可互换代币的特征是:
    • 等效
    • 可交换
    • 按你拥有的代币数量来确定价值
  • 不可互换代币。 不可互换代币的特征是:
    • 唯一
    • Distinct
    • 按你拥有的代币种类来确定价值

      以太坊

      以太坊是Vitalik Buterin(维塔利克·布特林,人称V神)在2013年提出的概念,Vitalik最早参与了比特币社区的开发,并希望比特币把功能受限的脚本扩展成图灵完全的编程环境,但没有得到比特币开发社区的认同,于是他决定另起炉灶,打造一个新的区块链平台,目标是运行去中心化的程序。

智能合约

所谓智能合约,就是一种运行在区块链上的程序。

  • 不支持浮点运算
  • 不支持随机数
  • 不支持从外部读取输入
  • 等等

Soidity

所有 Solidity 合同通常都包括:

  • Pragma 指令
  • 状态变量
  • 函数
  • 事件

    值类型

  • 整数
    整数的范围为可存储的 8 位到 256 位,如果未指定位数,则默认值为 256 位。
  • 布尔型
    它们的值始终是 true 或 false
  • 字符串文本
    它们是用双引号或单引号括起来的字符或字词

    1
    String shipped = "shipped"; // shipped
  • 地址
    地址是一种具有 20 字节值的类型,它表示 Ethereum 用户帐户,此类型可以是常规“address”,也可以是“address payable”。

    • “address payable”类型是 Ether 发送到的地址, 它包含额外的成员 transfer 和 send
  • 枚举
    可使用枚举在 Solidity 中创建用户定义类型。 之所以称之为用户定义,是因为创建合同的人员决定要包含哪些值。
  • 引用类型
    与总是传递值的独立副本的值类型不同,引用类型为值提供数据位置。 这三种引用类型为:结构、数组和映射。