智能合约
以太坊上的程序被称为智能合约,包含代码和相应的状态数据
我们可以简单的理解为在区块链上,由事件驱动、以代码形式存在、可执行的特殊交易合同。它是代码与数据的集合,是以太坊的核心。
智能合约非常适合对信任、安全和持久性要求较高的应用场景,比如:数字货币、数字资产、投票、保险、金融应用、预测市场、产权所有权管理、物联网、点对点交易等等场景。
以太坊概念
以太坊两类账户:
- 外部拥有账户(EOA) :由公钥/私钥对控制,没有关联任何代码
- 合约账户:由储存在账户中的代码控制
外部账户与合约账户的区分:
1、外部拥有账户和合约账户由同样的地址空间来表示,外部地址由公钥决定,合约账户的地址由合约创建者的地址和该地址发出过的交易数量Nonce计算得到
2、两个外部账户直接传送的消息只是简单的价值转移(转账)
3、外部账户到合约账户的消息会激活合约账户的代码,允许执行各种动作,合约账户不可以自己发起一笔交易,但是可以再响应交易是触发另一笔交易
注:在以太坊的任何动作都是由外部账户触发的交易所发起的,动作的发起者必须是外部账户
账户状态的四个组成部分:
- Nonce:外部账户(代表从此账户地址发送的交易序号),合约账户(代表此账户创建的合约序号)
注:以太坊有两种Nonce,一种是账户Nonce,表示一个账户的交易数量,另一种是工作量的证明Nonce,用于计算满足工作量证明的随机数 - Balance:代表该地址拥有的以太币的余额数量
- storageRoot:Merkle Patricia树的根节点Hash值,默认空值
- codeHash: 该账户EVM代码的Hash值 (EVM:以太坊虚拟机,是以太坊智能合约的运行环境)
以太坊钱包:
功能齐全的以太坊钱包:Geth、Mist、Parity,这些钱包使用是会同步整个以太坊区块链的数据,可称为以太坊客户端
费用(gas)
- 以太坊每笔交易收取的费用,其目的是限制执行交易所需的工作量,防止用户超负荷的使用网络导致网络瘫痪
- gas 介个由交易创建者设置,需预付的交易费用,交易完成还有剩余则返回给发送者账户,gas被耗尽,操作会进行回滚
- gas不仅仅是用来支付计算的费用,也用来支付储存的费用
以上仅个人学习笔记,谨慎参考