亲爱的朋友们,大家好,我是公众号老雅痞的小编波动,雅痞哥为了敦促我学习区块链/DAO/NFT知识,我们将单独开始一个专栏,从零开始学习。每天在公众号FastDaily和老雅痞各更新一篇。
让我们每天学点新东西,争取不白活。
欢迎大家和我一起学习进步(微信yaoyaobigc)~揪咪~

Solidity简述
Solidity 是一种静态类型的编程语言,旨在开发在以太坊虚拟机(EVM) 上运行的智能合约。solidity是玩链上项目必备的技能:区块链项目大部分是开源的,如果你能读懂代码,能帮你规避很多坑。
我们将分2期来学习一下Solidity的简单原理。
学习开始之前,有一些准备工作需要就位。
卡尔弗洛施
Solidity 是以太坊以及与以太坊竞争的平台上的其他私有区块链上的主要语言。
我们将分2期来学习一下Solidity的简单原理。
学习开始之前,有一些准备工作需要就位。
你需要什么✅
1. **Chrome** 网络浏览器
2. **Metamask** Chrome 扩展程序 (https
://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn) Metamask 允许你签署以太坊交易*无需*运行完整的 Geth 节点。
合约编程关键术语
#### ETH ETH 是以太坊网络上的主要货币。但是,以太坊可以支持多种货币,而 ETH 最终不会有特权地位。
Gas费
在以太坊上执行交易要么运行计算,要么存储数据。这会消耗网络 CPU 周期或存储空间。该费用由发起交易的账户支付。付款称为“gas”费。Gas 目前使用 ETH 支付。在撰写本文时,1 GAS = 0.00001 ETH。
Morden
Morden 是最受欢迎的公共以太坊测试网之一的名称。它与以太坊网络相同,但 Morden 上的 ETH 一文不值。你可以在 Morden 上从许多 Morden“ETH faucets”免费获得 ETH。
设置 Metamask
为了轻松地将合约部署到 Morden,我们需要 Metamask。如果你还没有安装 Metamask,请先安装。

在 Chrome 的右上角,你现在应该可以看到可爱的小狐狸 :)
点击图标,让我们开始创建你的以太坊钱包吧!

同意服务条款。在撰写本文时,Metamask 是测试版软件,因此如果你想将它用于主网,请不要存储或交易超过你可能损失的金额。

现在单击创建新保险库。这将开始钱包生成过程。

输入密码。
注意:如果你想将此帐户用于任何有价值的事情,请使用存储在1Password或LastPass等密码管理器中的随机生成的唯一密码。

备份你随机生成的“种子短语”。这是你的保管库主密码。要保证“种子短语”的安全,绝对不要将其发布在互联网上。
有趣的事实:你的帐户信息永远不会发送给网络上的任何人。它从未在某个数据库中注册过。为什么胆子这么大,不像那些中心化平台所做的验证账户名称呢?因为我们相信,两个人生成同一个帐户的概率非常低,这几乎不可能,所以默认大家生成的都是独一无二的。但是不能完全百分之百绝对排除重复的可能,它还是有一定可几率发生(尽管几乎可以肯定不会)。

恭喜!你现在有一个以太坊钱包。在左上角,你应该看到“Morden Test Net”。这是你当前连接的网络。你可以单击它并在测试网和主网之间切换。我们将留在Morden测试网上(这位很重要)。
在上传我们的合约之前,我们会得到一点额外的 ETH 以防万一。为此,请单击“购买”。

你将被跳转到 MetaMask ether,你可以在其中单击“request 1 ether”,它应该会将其发送到你的帐户。如果你的 ETH 用完了,请回到这里

开始写我们的第一份合同!✏️
MetaMask 几乎已经设置好了。现在我们必须使用它!首先,去这个网站:
https://ethereum.github.io/browser-solidity
这是一个很好的基于浏览器的 Solidity 编辑器。它允许你部署合约并与合约交互。
访问该站点后,你将看到一个示例合同。忽略它——它很复杂不适合现阶段的我们。相反,单击框图标。(Browser Solidity 不是很直观,所以一开始自然会有些困惑)

确保Injected Web3已选中。如果是,则 Browser Solidity 识别出你正在使用 MetaMask,它将连接到他们的服务器。如果未选中,请确保 MetaMask 正在运行并刷新网页。

接下来,让我们看一下HelloWorld我们要部署到网络的合约:
contract HelloWorld {
event log_string(bytes32 log); // Event
function () { // Fallback Function
log_string("Hello World!");
}
}
什么是活动?事件本质上是 EVM 中的日志。运行合约时,你可以调用事件并将你希望记录的数据传递给它们。在这种情况下,我们创建一个名为log_string(bytes32 log) 的自定义定义事件。这将记录我们作为参数传入的任何内容。
是什么function () {}?这是一个后备功能。回退函数是在调用合约并且没有指定现有函数时调用的特殊函数。回退函数通常被使用,因为它们在用户将 ETH 发送到合约时执行,这就是我们使用它的原因。
如何运作?我们将把这个合约部署到测试网。完成此操作后,我们将向合约发送交易。然后我们将使用以太坊区块浏览器来读取日志。
让我们开始吧!首先,将HelloWorld合约复制到 Browser Solidity。完成后,单击Create。

你现在应该会看到包含交易信息的通知。一旦获得批准,你的交易将被发送到以太坊网络。
注意:如果你没有立即看到此信息,请单击狐狸并确保你已登录。

现在,打开你的钱包并查看列出的交易。将鼠标悬停在它上面,然后单击它。这将带你到https://etherscan.io查看检查你的特定交易。

一旦在 Etherscan 上,你可能会看到你的交易是Pending。稍等片刻,然后刷新你的浏览器。部署后,单击新合约的地址。

在此页面上,可以检查所有涉及你的精彩合约的交易!我们想向联系人发送一个事务,这样它就会打印“Hello World!”,让我们复制它的地址。

再次打开 MetaMask,让我们发送交易!

将你的合约地址粘贴过来。或者,你可以向你的合约发送一些 ETH(即 0.1)以查看其余额增加。然后点击发送。

再次单击“批准”以发送你的交易。

MetaMask 现在应该列出你的新交易。单击它以在https://etherscan.io上进一步检查

差不多好了!只需点击Event Logs查看是否“Hello World!” 被记录!

这一长串十六进制的字符是在是太难记了!我们必须将十六进制代码转换为人类可读的 ASCII。
首先,复制那个可怕的十六进制,我们很快就会转换它。

前往
http://www.rapidtables.com/convert/number/hex-to-ascii.htm并将十六进制粘贴到顶部框中。点击Convert ,等一下就好。

奖励积分:使用此图表手动将你的 hex 转换为 ascii:

搞定!
你正式成为 Solidity 大师!但是要成为 Solidity 大师++,请查看第 2 部分,我们在其中部署了提交-显示风格的投票合约!(将在老雅痞公众号上推送。)