2. 专业术语
2.1 区块链(Blockchain)
区块链是一种去中心化的分布式计算系统,主要的特点是数据永久不可篡改性、不可伪造、公开透明信任度高。核心的技术包括拜占庭容错的共识算法(PBFT)、加密技术、P2P技术等。
2.2 迅雷链(Thunderchain)
迅雷链(ThunderChain)是迅雷旗下网心科技创新打造了具备百万tps高并发、秒级确认能力的高性能区块链,并在此基础上,搭建了迅雷链开放平台,助力开发者快速开发、部署智能合约,企业或个人可以轻松将自己的产品和服务上链,更加便捷地开发区块链应用。
2.3 交易(Transaction)
区块链可以理解为一个全局共享的交易数据库系统。任何有权限的软件都可以读取区块链网络中的数据。当需要改变区块网络中的数据时,就必须发起一个被所有区块节点接受的请求,这个请求在系统中统称为交易(Transaction)。交易具有事务性,提交到区块链,要么全部不执行,要么全部执行。一个交易执行完成后永久保存到区块链,不能再做修改和再次执行。交易由系统中的账户(Account)发起并且签名,通过加密技术,交易只能由私钥持有人发起,其他人不能修改和伪造。这样保证了交易的真实和安全。
2.4 账户(Account)
在区块链系统中有两类账户,一个是外部账户,一个是合约账户。外部账户拥有自己独有的公私密钥,账户由这个密钥对控制。合约账户有自己的代码,账户由自己的代码控制。账户由一个地址标识,地址长度是一样的,两类账户无差别。外部账户的地址由其公钥产生,合约地址使用创建合约账户的地址以及创建合约账户的交易数(nonce)产生。迅雷链开放平台的合约由官方地址统一部署,普通账户在迅雷区块链不能发布合约。用户的合约必须经过官方评审,由迅雷统一发布。在系统内部,对待这两类账户是无差别的。每个账户在系统内部有一个256bits到256bits的key-value存储结构,叫做storage。每个账户有个余额叫做balance,单位是wei,可以通过发送带数值的交易到账户进行修改。
2.5 合约(Contract)
合约就是存储了代码的区块链账户,通过给这个账户发送交易实现合约调用。当前比较流行的合约编程语言是Solidity。当前开放平台支持基于EVM的Solidity语言和基于WASM的C/C++语言开发的合约。合约内容为两个部分,数据储存和函数,数据存储着合约的状态,函数是合约对外的接口,通过调用函数实现数据查询和状态修改。通过Solidity编写合约,编译后得到EVM字节码。通过给合约账户发送交易,实现合约调用。
2.6 Gas
Gas是区块链的付费单位,一个交易创建的时候,会指定支付一定数量的Gas。主要是为了约束交易的运算量,以及为交易执行支付费用。交易执行过程中,Gas会以一个EVM设定的规则消耗。Gas价格(Gas price)是由交易创建者指定的一个值,交易执行需要支付的费用数量为Gas_Price*Gas。交易结束如果Gas有剩余,剩余部分会返回给创建建议的用户。如果Gas不足,交易执行会失败,为了系统安全防止泛洪攻击,交易失败的手续费不返回。Gas价格的最小单位是wei,10^18 wei = 1 迅雷链token。Gas_Price当前固定取值为10^11,暂时没有开放自由设定。
2.7 Solidity
Solidity是针对智能合约设计的一门高级编程语言,运行环境是EVM(Ethereum Virtual Machine)。语言设计实现中受到了C++/Python/JavaScript的影响。Solidity是强类型语言,支持继承、多态、接口、抽象、库、自定义数据类型等特性。Solidity支持汇编指令编程,代码编译为字节码后运行在EVM上。Solidity是当下最流行的智能合约开发语言,也是迅雷合约平台推荐和支持的语言。