1.transation 交易
2.哈希校验:是否被串改。
3.pow 工作量证明
4.block 威胁
5.私钥转账签名
https://anders.com/blockchain/coinbase.html
以太坊账号通用的原因:
普通注册存在公司的服务器中。
以太坊账户只有一个,私钥存在电脑本地,可以通用。
#30秒等待的详细流程
translation提交给一个node(如何修改node,选择node?)
node可能在某个时间内收到很多个translation
node对translation排序,挖矿
node算好nonce就会广播给全网
最先算出nonce的node会得到挖矿奖励
智能合约
一个由代码控制的账户, 可能与钱打交道的合同
- balance 账户余额
- 2.storage 智能合约的数据存储 code 智能合约的机器码(二进制机器码)
- code 智能合约的机器码(二进制机器码)
- code 智能合约的机器码(二进制机器码)
#solidity简介
1.扩展名 .sol
2.强类型编程语言
3.与javascript类似
solidity —> bytecode(机器语言,区块链系统读取) solidity —> ABI application
简单的helloworld 智能合约
pragma solidity ^0.4.17; //声明编译器的版本
contract Inbox{ //类似java的声明class
string public message;
function setMessage(string newMessage) public{
message = newMessage;
}
function getMessage() public view returns(string){ //有有返回值
return message;
}
}
#solidity函数声明
函数名
函数签名(返回值,参数类型,修饰符)
修饰符 说明
public 公有,任何人(拥有以太坊账户的)都可以调用
private 私有, 只有智能合约内部可以调用
view/constant 函数不会修改任何contract的数据
pure 函数不使用任何智能合约的变量
payable 调用函数需要付钱,钱付给了智能合约的账户
returns 返回值 函数声明中使用
remix工作原理. 虚拟的以太坊网络
1.控制台, 编译节点, run节点 environment javascript vm
2.account 虚拟账户 5个
3.创建智能合约,智能合约在网络上的地址是什么
4.调用getMessage setMessage
5.set的红色 (send) 发送 transaction请求 至少花费十几秒 (花钱!!!)
6.get的蓝色 (call) 调用 瞬间 (免费)
搭建本地solidity开发环境
1.安装nodejs
2.npm install remix-ide -g
3.remix-ide
外部账户,创建智能合约的transaction流程
字段 | 描述 |
---|---|
nonce | nonce代表此账户创建的合约序号 |
to | - 空 |
data | 智能合约编译的bytecode |
value | transaction带的钱 单位wei |
gasprice | 油价 |
gaslimit | 最大gas量 |
key | 密码学相关信息 |
函数调用call | 函数调用 send transaction |
---|---|
不修改智能合约的数据 | 修改智能合约的数据 |
函数可以返回数据 | 函数不能返回数据, 因为函数需要花时间执行 |
立刻执行 | 需要几十秒才能执行完毕,返回值是transaction的hash |
免费 | 要花钱 钱!!! |