区块链学习 - solidity合约部署
区块链原理
通过https://anders.com/blockchain/hash.html
可以直观的了解hash
、block
(区块)、blockchain
(区块链)、distributed
(分布)、tokens
(代币)各个概念。
开发环境配置
1、 MetaMask
钱包
1.MetaMask
是什么?
MetaMask
是一款在谷歌浏览器Chrome
上使用的插件类型的以太坊钱包,该钱包不需要下载,只需要在谷歌浏览器添加对应的扩展程序即可,非常轻量级,使用起来也非常方便。
2.MetaMask
安装
chrome
浏览器安装MetaMask
,直接用MetaMask
创建钱包或者通过myetherwallet.com
创建钱包,然后用MetaMask
导入钱包私钥即可。
开发测试时,最好新建一个测试钱包,万一自己的币搞没就裂了~~
3.MetaMask
常用功能
如上图所示,第一个为正式网络,也就是ETH
的公链,真实的币就存在公链上。后两个是两个测试网络,点击后便会切换到测试网络,钱包的地址也会随之改变。为了测试方便,在测试网络的钱包中免费获取一些测试用的代币。
4.测试代币获取
在Ropsten Test Network
测试网络下,点击BUY
->ROPSTEN TEST FAUCET
会跳转到https://faucet.metamask.io/
页面,可以请求获取测试用的eth
代币,也可以给别人发送测试代币。操作完成后钱包会显示相应的测试代币数量。
在Kovan Test Network
测试网络下,获取测试代币的方式是:加入gitter
中的faucet
组织,链接为https://gitter.im/kovan-testnet/
。加入后,MateMask
钱包在Kovan Test Network
测试网络下,复制当前测试环境下的钱包地址,然后在gitter
的社区中,发送自己的钱包地址(@管理员epheph
),这位雷锋大兄弟会给你的钱包发送5个测试代币,最后别忘了来句日常感谢~
2、solidity
开发环境配置
atom
编辑器安装以下两个插件:autocomplete-solidity
language-ethereum
3、solidity
代码示例
solidity
代码文件后缀为.sol
以下是完整的,最简单的solidity
合约代码:
1 | // pragam 关键字 |
solidity
代码中一定要加;
!!!!!!,包括第一句pragam solidity ^0.4.19;
属性访问权限: public: 1.会生成一个和属性名同名的get函数,这个函数返回属性自己 2.合约内部可直接访问 3.子类可继承属性 internal: 1.合约内部可直接访问in 2.子类可继承属性 private: 1.合约内部可直接访问
4、部署合约
打开
http://remix.ethereum.org/
网站,url
后会自动补齐当前最先版的solidity``sdk
版本,注意自己写的代码向上兼容性。将上述代码直接粘贴到左侧编辑器中,会自动编译查错,正常编译通过后,可以在右侧面板点击
run
选项。各选项解释如下:Environment
指合约要部署的网路环境,JavaScript VM
是本地的测试网络;injected Web3
是发布到公链。Account
指部署合约的钱包地址,因为部署合约需要往公链上写数据,所以需要消耗代币。选择本地测试网络的话,有默认的五个免费的钱包,里面各有100以太币。选择部署到公链的话,通过选择MateMask
的网络环境(主网或两个测试网络),Account
会显示对应的网络环境下的钱包地址(钱包中必须要有代币才行)Gas limit
和Value
默认即可
完后下方可以选择
solidity
代码中声明的类,也就是我们要部署到网络中的类,对应上述代码就是Person
和ChildPerson
两个类选择其一。之后点击
create
,支付完所需的代币手续费后,等待部署完成即可,部署成功后便可以在下方看到合约的地址信息,及合约中暴露出来的各种方法,如getAge
、setAge
等,可以调用这些方法从部署在网络上的合约中写入数据(花费代币)及读取数据(免费),调用kill
方法时会执行析构函数selfdestruct
,从网络中销毁合约。
至此,一个简单的合约,从代码编写到部署上线的整套流程结束。
区块链学习 - solidity合约部署