以太坊(二)——账户

外部账户 (Externally owned account, EOA )
        本地产生一个公私钥对,私钥掌握账户的控制权,外部账户包括账户余额(balance)、计数器(nonce),也叫普通账户。

• 有对应的以太币余额
• 可发送交易(转币或触发合约代码),所有的交易只能由以太坊外部账户发起。
• 由用户私钥控制
• 没有关联代码

合约账户 (Contract accounts)

        也叫内部账户(用户账户/普通账户)
• 有对应的以太币余额
• 有关联代码
• 由代码控制
• 可通过交易或来自其它合约的调用消息来触发代码执行
• 执行代码时可以操作自己的存储空间,也可以调用其它合约。
        合约账户不是通过公私钥对控制的,除了balance(余额)和nonce(交易次数)之外还有code(代码)、storage(相关状态-存储,包括每个状态的取值),一个合约可以调用另外一个合约,所以要通过nonce值记录一下调用的次数,但是合约账户不能主动发起一个交易,以太坊规定,所有的交易只能由外部账户发起,外部账户发起一个交易如果调用了一个合约账户,这个合约账户可以发送一个message调用另外一个合约,但是它不能自己发起一个交易。

以太坊交易(Transaction)

        交易及签名的数据包,由EOA发送到另一个账户,交易包括以下内容:
• 接收方地址
• 发送方签名
• 金额(VALUE)
• 数据(DATA,可选)
• START GAS
• GAS PRICE

消息(Message)

        是合约之间的通信方式,合约可以向其它合约发送“消息”,消息可以进行转账(相当于交易,会记录在内部交易中);如果不进行转账,是不会被序列化的(虚拟对象),只存在于以太坊执行环境(EVM)中,可以看作函数调用。包括的内容和交易类似:
• 消息发送方(因为没有签名,所以需要消息发送方地址)
• 消息接收方
• 金额(VALUE)
• 数据(DATA,可选)
• START GAS

合约账户的调用


        创建一个合约会返回一个地址,知道合约的地址,就可以调用这个合约,调用的过程当中状态会发生变化,所以存储(storage)就会变。

### 以太坊客户端安装教程 #### Windows平台上的Geth客户端安装 为了在Windows平台上安装Geth客户端,需遵循一系列特定指令来确保顺利部署。首先应从官方资源获取最新版的Geth软件包[^3]。 一旦下载完成,解压文件到指定位置,并将`geth.exe`所在的路径添加至系统的环境变量中以便于命令行调用[^4]。 通过打开命令提示符窗口输入如下命令创建新账户: ```bash personal.newAccount('your_password') ``` 此操作会返回一个以`0x`开头的新地址字符串表示创建成功的账号[^2]。 接着可以通过运行下面这条语句启动Geth连接主网: ```bash geth --syncmode "snap" console ``` 上述参数设置同步模式为快照同步(`snap`),它能加快初次同步速度;而`console`选项则允许进入交互式的JavaScript控制台界面方便后续管理操作。 对于希望减少磁盘占用空间的情况来说,还可以考虑采用轻量级客户端的方式接入网络——即仅保留必要的区块头信息而不存储完整的账本副本[^1]。 #### Ubuntu平台上的Geth客户端安装 针对Linux发行版如Ubuntu, 推荐利用其内置包管理系统apt-get来进行快速简便地安装过程: 更新本地APT索引库之后执行以下两步即可完成整个流程: ```bash sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update && sudo apt-get install ethereum ``` 最后同样地使用之前提到过的相同方式开启服务端程序并与之互动交流。 #### Besu Java以太坊客户端配置 考虑到部分开发者可能更倾向于基于JVM的语言生态,则可选用由Hyperledger开发维护的企业级解决方案—Besu作为备选方案之一[^5]。 由于该工具本身是由Java编写而成因此前提条件是要事先准备好兼容版本以上的OpenJDK环境(建议至少为11及以上),随后依照官方文档指引下载对应操作系统架构下的进制分发包并按照说明逐步实施安装步骤直至结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值