智能合约笔记(2)区块链概念2

周杰伦演唱会门票还有吗 · · 1215 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

        上一篇文章提到过账户分为两种,外部账户和合约账户.外部账户的名字应该是外部拥有账户,这里简称为外部账户.该账户和银行的账户几乎是同一个概念,由人控制,并且没有观念任何代码.而合约账户的存储是代码控制的.

        合约账户存储代码,外部账户却没有,这是区别之一.外部账户请求交易,合约账户响应交易,这是区别之二.这是我目前了解到的区别.对我而言,外部账户有点像客户端,合约账户像服务端的感觉.但是不能混为一谈.

        钥匙文件是定义外部账户用的,有一个公钥和私钥.账户的地址最后20个字节就是公钥,而私钥和地址都被编码在一个钥匙文件中.钥匙文件是json格式.

        每个账户都由一块持久化存储区域,以键值对的形式存储.,无论是key还是value长度都是256.第一个存储区是内存,第二个存储区被称为栈.

        既然账户能存储也就能够删除,这里的删除叫做自毁.关于自毁这个概念其实不是很好理解,要是有人明白的发,请给我留言详细说说.我的理解是自毁会把其存储和代码都移除.

        账户状态是由Nonce(目前状态),storageRoot(存储节点),Balance(余额)和codeHash(散列编码)四个部分组成.外部账户的Nonce表示此账户地址发送的交易序号,而合约账户的Nonce表示此账户的合约序号.

        以太坊有两种Nonce,一种是上面介绍的账户Nonce,一种是PoW的Nonce,PoW的Nonce用于计算满足其随机数.

        存储节点是MPT的根节点hash值,MPT会将账户的存储内容进行hash值编码,默认是空值.

        余额就是该地址拥有的以太币余额数量,当向它发送带有以太币的交易时,余额会随之改变.

        散列编码就是该账户的EVM(以太坊的虚拟机)代码的hash值.合约账户的散列编码就是被hash的代码,而外部账户的散列编码域是一个空字符串的hash值.

        以太坊钱包是账户的管理工具,Geth是客户端钱包,它是用golang开发的.(可见golang对于区块链的重要性).Geth从功能上来看待就是一个交互式命令控制台.

        gas在以太坊的意思是费用,查询了英文解释发现用gas作为费用有点让人费解,但是理解后会觉得gas这个词选的还不错.以太坊的每笔交易都会收取gas.如果一个账户的gas被消耗完毕,那么就会触发事务回滚.

        以太坊的网络大致分为四种,主网,测试,私有和模拟.其实除了主网之外的,其他都是用于调试开发的.站在一个开发人员的角度来看,是这样的.


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:周杰伦演唱会门票还有吗

查看原文:智能合约笔记(2)区块链概念2

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1215 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传