以太坊

code execution

EvMcode:以太坊虚拟机器语言,代码由一定长度的字节组成,不同的字节代表不同的操作

三种存储数据:基于栈,先进后出

memory,可以无限扩展的数组

storage,秘钥或有效值的存储,不同于栈和内存的永久存储。计算结束后就重置

Block chain and mining

和比特币最大的不同是以太坊包含了一系列交易和块里最近的一次交易的状态。

基本的块验证机制:

1检查上一个块存在并且正确

2检查时间戳大于前一个块并且没超过15分钟

3检查块号,难度值,交易根,叔叔根,Gasd的限制

4检查工作量证明

5 s[0]记录前一个块结束状态

6 tx[]记录一系列交易。S[i+1] = APPLY(S[i],TX[i])

7 s_final=s[n],给矿工奖励

8检查merkle树根的值s_final是否等于去块头提供的最后状态的值

即使要记录块的状态也有很高的效率,因为用树来记录,相邻的块之间只有很小的一部分不同,

所以可以是树存储一次然后直接用指针。因为执行合同代码是关于状态转换函数的一部分定义

状态转换函数是块验证算法的一部分,所以如果一个交易加到块里,将会被所有执行交易的

节点大量的执行。

Applications

1 金融应用:金融衍生物,hedging合同,存储钱包

2 半金融应用:一部分真是需要钱一部分不需要钱,如矿工通过计算解决问题获得奖励

3线上投票,分散治理

Token system(l令牌系统)

包括很多种类的资产都是,但是最重要的是所有的金融或者说令牌系统都是

对一个数据库的操作。A给B 50b  .A有这么多钱的话A=A-50,B=B+50

有一个特点:在该货币中直接支付交易费用的能力。

这将是实现的方式是,合同将保持ETHER平衡,它将退还用于支付费用的ether给

发送者,它会通过收集内部的货币重新填满达到平衡,它以恒定运行拍卖拍卖掉ether

。因此,用户将需要用ETHER“激活”他们的帐户,但一旦

激活将是可重复使用的,因为该合同在将来的每一次将退还它。

时间: 2024-10-25 20:22:10

以太坊的相关文章

以太坊(三)

总览 以太坊虚拟机(EVM)是以太坊中智能合约的运行环境.它不仅被沙箱封装起来,事实上它被完全隔离,也就是说运行在EVM内部的代码不能接触到网络.文件系统或者其它进程.甚至智能合约与其它智能合约只有有限的接触. 账户 以太坊中有两类账户,它们共用同一个地址空间.外部账户,该类账户被公钥-私钥对控制(人类).合约账户,该类账户被存储在账户中的代码控制. 外部账户的地址是由公钥决定的,合约账户的地址是在创建改合约时确定的(这个地址由合约创建者的地址和该地址发出过的交易数量计算得到,地址发出过的交易数

区块链入门(2):搭建以太坊私有链(private network of ethereum),以及挖矿的操作..

在做一些测试工作的时候, 为了方便控制以及更快的进入真正的测试工作,可能需要搭建一个私有的以太坊网络. 而以太坊节点之间能够互相链接需要满足1)相同的协议版本2)相同的networkid,所以搭建私有网络最方便的方法就是通过geth命令中的--networkid选项,设置一个与主网不同的networkid(主网的networkid为1),这也是官方推荐的方法. 下面开始建立私有以太坊网络: mkdir private-geth cd private-geth 建立创世纪区块文件,是一个json格

搭建基于以太坊的私有链环境

零.概述 版本号:Ubuntu-16.04 ethereum-1.6.0-stable go - 1.7.4 一.Ubuntu下安装geth sudo apt-get install software-properties-common sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update sudo apt-get install ethereum 二.创建初始化文件 vim genesis.json {    

以太坊智能合约编程之菜鸟教程

基本概念 了解这些名词是一个不错的开始: 公钥加密系统. Alice有一把公钥和一把私钥.她可以用她的私钥创建数字签名,而Bob可以用她的公钥来验证这个签名确实是用Alice的私钥创建的,也就是说,确实是Alice的签名.当你创建一个以太坊或者比特币钱包的时候,那长长的0xdf...5f地址实质上是个公钥,对应的私钥保存某处.类似于Coinbase的在线钱包可以帮你保管私钥,你也可以自己保管.如果你弄丢了存有资金的钱包的私钥,你就等于永远失去了那笔资金,因此你最好对私钥做好备份.过来人表示:通过

以太坊挖矿原理

以太坊的共识机制是 PoW(Proof of Work 工作量证明机制),使用的算法是Ethash,这种算法是对 Dagger-Hashimoto算法的改良版本,流程大概如下 1.对于每一个块,首先计算一个种子(seed),该种子只和当前块的信息有关;然后根据种子生成一个32M的随机数据集(cache) 2. 根据Cache生成一个1GB大小的数据集合DAG(有向非循环图),它是一个完整的搜索空间,挖矿的过程就是从DAG中随机选择元素(类似于比特币挖矿中查找合适Nonce)再进行哈希运算,可以从

以太坊开发--geth的使用入门

geth的全称是go-ethereum,是一个以太坊客户端,用go语言编写,应该是目前最常用的客户端.当然以太坊客户端还有用C++,Ruby,Python,Java等其他多种语言编写的,不同类型的客户端是为了满足不同的需求场景.今天我们主要来介绍geth(发音同guess )的使用. 对于我们开发来说,比较普遍有两种方式打开geth控制台,以开发方式登录和私链方式登录.这两种方式是完全不同的,两者的账户也是不共用的,其中以开发方式登录相对比较简单,以私链方式登录还需要进行额外的配置,我会在后面的

以太坊紫皮书

以太坊紫皮书(中文版) <ignore_js_op> 作者:Vitalik Buterin 译者&来源:LinktimeTech 微信公众号 在刚刚闭幕的以太坊Devcon 2大会上,以太坊创始人Vitalik分享了他的最新研究成果<以太坊紫皮书>,在此我们将其翻译成中文,供大家阅读.<紫皮书英文>原版大家也可以从我们的公众号中找到并阅读.当然,如此前沿和复杂的论文翻译是很大的考验,如果大家觉得以下内容有问题,请及时与我们反馈,我们将在后期的公众号文章中进行纠正

比特币、以太坊

关于区域链的应用; namecoin:一个很好的名字注册数据库 colorcoin:作为一个协议允许人们定义自己的数据货币,或者作为一个单元,代币在区域链上 metacoin:在比特币之上的一个协议,用比特币交易来存储附属币的交易但是有不同的交易转换器 建立一个共识协议有两种方法:建立一个独立的网络或者在比特币协议上工作.前者理论上很成功但是实施有很大的困难,后者(metacoin)—不能继承比特币的简化验证功能.   脚本语言 可以定义一个UTXO,一个交易来花费utxo时必须提供脚本语言里描

ubuntu系统搭建以太坊私有链

1.安装curl.git apt-get update apt-get install git apt-get install curl 2.安装go curl -O https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz Unpack it to the /usr/local (might require sudo) tar -C /usr/local -xzf go1.5.1.linux-amd64.tar.gz 3.