以太坊基础
控制和责任
每个用户都能控制自己的密钥,密钥是专属于个人的,这种控制带来了很大的责任。如果你丢失了你的密钥,你将无法获得资金和合约。没有人可以帮助你重新获得访问权 - 你的资金将永远锁定。
以太坊货币单位
以太 ether
以太被细分为更小的单位,最小单位为wei。
1 ether = 10^18^wei
💡以太坊是制度(是公链),以太才是货币
单位名wei => wei
Kwei => babbage
Mwei => lavelace
Gwei => shannon
MicroEther => szabo
MilliEther => finney
ether => ether
Kether => grand
Mether
以太坊钱包
以太坊钱包是通往以太坊的门户。
钱包管理你的密钥,并可代表你创建广播和交易。
MetaMask 浏览器扩展钱包
Jaxx 多平台 多币种 钱包
MyEtherWallet(MEW) 基于web的钱包
MainEthereumNetwork 以太坊主网 正式的 真正的ETH
Ropsten Test Network 以太坊公开测试网 POW共识机制
Kovan Test Network 以太坊公开测试网 “Aura”协议的权威证明POA(proof-of-authority) 共识机制
Rinkeby Test Network 以太坊公开测试网 “Clique”协议的POA 共识机制
localhost8545 连接到与浏览器在同一台计算机上运行的节点
世界计算机
事实上,加密货币功能是服务于以太坊作为世界计算机的功能 — 一个去中心化的智能合约平台。
以太坊货币旨在用于支付 运行的智能合约(EVM上运行的计算机程序)。
EVM是一个全球性单例,运作方式就是一个全球性的单实例计算机,无处不在。
以太坊网络上的每个节点运行EVM的本地副本以验证合约执行,以太坊区块链记录该世界计算机在处理交易和智能合约时变化的状态。
外部所有账户和合约账户
钱包中创建的账户类型为EOA(Externally Owned Account),管理私人密钥的账户,控制对资金或合约的访问。
合约账户由以太坊区块链记录,由EVM执行的软件程序的逻辑所拥有和控制。
这两种账户永远存在的重要区别在于:
人们通过外部账户做出决定,而软件通过合约账户做出决定。
EOA和合约共同点:都有一个地址,都可以发送和接收ether。
当交易的目标地址(to)为合约地址时,会导致合约在EVM中运行,并将交易作为其输入。
除了ether外,交易还可以包含数据,用于指示合约中要运行的特定方法以及传递给该方法的参数。通过这种方式,交易可调用合约方法。
e.g. ethereumjs-tx库 构造的交易 value为ether,data为合约函数名转16进制+函数参数转16进制
合约还可以产生调用其他合约的交易,建立更复杂的执行路径。
区块链上创建合约
在区块链上注册合约 涉及一个特殊交易,其目标地址是0x0000000000000000000000000000000000000000,也称为zero address。零地址是一个特殊地址,告诉以太坊你想注册一个合约。
与合约交互
以太坊合约运行在名为EVM的虚拟机内。它们是由一个特殊的交易创建的,该交易提交它们的字节码以记录在区块链中。一旦他们在区块链上创建,他们就拥有一个以太坊地址,就像钱包一样。
只要有人将交易发送到(to)合约地址,就会导致合约在EVM中运行,并将交易作为其输入。
发送到合约地址的交易可能包含ether或数据。如果包含ether就将其存入合约余额,如果包含数据则代表指定一个命名函数并调用它,同时将参数传递给该函数。
如果将交易发送到合约地址(向合约发ether),不指定调用哪个函数的数据,将调用默认函数(fallback)。
注意💡 需要在合约中声明fallback | function() external payable{//可不写函数体}
否则无法直接给合约转账
