以太坊是有账户的,每个用户都可以开设账户,账户余额是我们拥有的以太币或其他基于 ERC20 标准的通证。账户的设计使得以太坊与比特币不同,根据之前的讨论我们知道,比特币只有钱包地址和未使用的交易输出。

以太坊的两种账户:外部账户和合约账户

以太坊有两种账户,如下图所示:

  • 外部账户(externally owned accounts),由密钥控制。
  • 合约账户(contract accounts),由智能合约的代码控制。

图1:以太坊的两种账户

以太坊的账户包括四个字段:一个随机数、账户的余额、合约代码(如果有的话)、存储(通常为空)。

只有合约账户才有代码,其中存储的是 codeHash(这个账户的以太坊虚拟机代码的哈希值)。这个字段在生成后是不可修改的,这意味着智能合约代码是不可修改的。

外部账户可以触发交易,而合约账户不能主动发起交易,只能在被触发后按预先编写的智能合约代码执行。

合约账户可以设置多重签名(multisign),比如一个简单示例是:现有一个合约账户,它要求一个转账由发起转账的人(Alice)和另一个人(Charles)签名均可。因此,当 Alice 通过这个合约向 Bob 转账 20 个 ETH 时,合约会通知 Charles 签名,在他签名后,Bob 才可以收到这 20 个 ETH(见图2)。

图2:以太坊合约账户的多重签名

以太坊的交易和它的区块中存的是什么

和比特币一样,以太坊的区块中存储的也是交易(transaction),它包括的字段主要有:接受者(接受的账户)、发送者的签名、发送者发给接受者的以太币金额等。

与比特币的区块中存储的是交易不同,以太坊的区块中以梅克尔帕特里夏树(Merkle Patricia Tree,MPT)形式存储的是相应的以太坊账户的状态。

以太坊的交易是所谓的状态转换函数,一个交易触发它的执行,它将相应的账户从一个状态转变成新状态,然后新状态被存储在区块链的数据区块中。

以太坊的账户(外部账户和合约账户)相关推荐

  1. 建立基于以太坊的私有网络和智能合约 1

    建立基于以太坊的私有网络和智能合约 本文欢迎转载,转载请标明出处 freewolf 资深IT从业者,关注微服务.区块链.敏捷开发.前端技术等,不是大神,只是出于热爱.有问题可以到 https://gi ...

  2. 以太坊数据上链和展示智能合约

    以太坊数据上链和展示智能合约 1. 首先定义上链数据的基本结构(推荐使用结构体) 2. 定义全局变量和判定的一些变量 3. 定义接受数据和展示数据的函数 4. 将数据传入,使用memory定义接受变量 ...

  3. 以太坊Dapp开发通过truffle部署合约

    以太坊Dapp开发通过truffle部署合约 Truffle是一个非常流行 DApp 开发框架,他可以帮我们处理掉大量无关紧要的小事情,让我们可以迅速开始写代码-编译-部署-测试-打包DApp这个流程 ...

  4. 建立基于以太坊的私有网络和智能合约

    本文欢迎转载,转载请标明出处 freewolf 资深IT从业者,关注微服务.区块链.敏捷开发.前端技术等,不是大神,只是出于热爱.有问题可以到 github.com/freew01f/bl- 进行交流 ...

  5. 120 以太坊 ethereum truffle : 编写自动化智能合约测试

    • 介绍 • 关于测试 • 设置测试环境 • 编写单元测试 • 执行复杂的断言 • truffle Tutorials 教程 • Contact 联系方式 • 介绍 在区块链环境中,一个错误可能会花费 ...

  6. Cover团队在Kovan以太坊测试网部署xCOVER智能合约

    Cover联合创始人Alan通过推特发布Kovan以太坊测试网上的交易哈希,交易哈希显示Cover团队已经建立了新的智能合约(xCOVER).在评论中有推特用户称:xCOVER来了,我们将能够质押CO ...

  7. 以太坊Dapp项目-拍卖网站-智能合约编写测试

    修订日期 姓名 邮箱 2018-10-18 brucefeng brucefeng@brucefeng.com 前言 写这篇文章的初衷其实很简单,在MyEtherWallet上申请以太坊ENS的时候, ...

  8. java 创建以太坊代币_以太坊 (五)编写智能合约-建立简易加密代币

    本篇文章,我们将写一个简易的加密代币的智能合约来给大家诠释加密代币的原理 启动 ganache-cli 打开终端,启动ganache-cli,相关环境在区块链学习日记(四)这篇文章里面已经有具体说明. ...

  9. 基于以太坊的分布式投票系统solidity合约代码

    pragma solidity ^ 0.4.26;contract Ballot {string public name; //投票的名称,name of the Ballotaddress publ ...

  10. 以太坊 – 使用truffle console访问智能合约

最新文章

  1. linux编译安装网卡驱动详解(网卡丢包)
  2. 程设13次作业总结--运算符重载
  3. BZOJ 4819: [Sdoi2017]新生舞会
  4. Mac OS X上安装配置apache服务器
  5. 使用Linux自定义自动补全命令完善自己的shell脚本
  6. MySQL--pymysql模块
  7. html5 websocket 手机,HTML5 WebSocket 示范
  8. php删除数据库数据操作日志文件,MSSQL清空日志删除日志文件
  9. 消息持续积压几小时怎么办
  10. matlab脑电打码,matlab 脑电信号特征提取程序
  11. 【代码优化】反射机制的慎用
  12. javaWeb新闻管理系统
  13. 2013年2月 VB100 测试成绩公布
  14. App消息推送 实现原理
  15. 001-http-总览、文件配置、常用http client、http连接池
  16. Cheat Enginee(CE)对扫雷中部分属性的内存地址寻找以及修改~逆向分析
  17. win7 引导 ubuntu
  18. VOLTE网络架构、接口与功能实体
  19. springboot汽车配件销售系统-预约洗车系统java
  20. Windows Update彻底禁用/禁用后自动开启的解决办法

热门文章

  1. linux cpu参数,Linux查看CPU详细信息
  2. python基础系列之学习Python列表,只需这篇文章就够了
  3. oracle Flashback详解
  4. How to generate the 8660_msimage.mbn
  5. m3u8及TS文件下载解密:m3u8文件下载及分析(三)
  6. 15KW电动机380V及220V时的电流分别为多少
  7. 建筑八大员培训湖北劳务员培训我国与德国的建筑劳务派遣对比
  8. Hadoop Federation联邦机制
  9. 28KHZ/40KHZ双频率超声波换能器振子设计
  10. 西班牙专线物流有哪些运输方式 西班牙专线物流有哪些优点和缺点