Web3开发学习笔记3----了解智能合约以及账户,准备在以太坊上创建部署合约【3/7】

444 阅读5分钟

“携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

如果前两天,你已经了解了什么是区块链,EVM,以及开发DApp所需要的一些技术栈和工具。那么,现在开始就可以创建第一个属于你的智能合约了。 什么?如果你还是不了解,请重复阅读前两天笔记。 

 创建和发布自己的TOKEN 或者 NFT(non-fungible tokens), 都是通过智能合约 SmartContract。 今天就讲智能合约

一、了解智能合约

这里需要介绍下智能合约(Smart Contract),智能合约构成了构建在区块链上的所有 dApp 的基础,它们通常使用自定义语言编写,例如 Solidity(用于 Ethereum)或 Cadence(用于 Flow),RUST(用于Solana)以及MOVE(用于Aptos,sui)。   以太坊上( EVM上)采用的是Solidity语言。

智能合约的开发程序往往比传统程序简单得多,基本上不需要了解太复杂的架构和依赖关联,只需要掌握好一些基础(例如类型,变量,结构语法,以及业务逻辑等),但它的风险要比一般程序高得多——一个智能合约错误可能会导致数百万美元在几分钟内被耗尽! (也就是在币圈黑客和安全问题一直以来都很严重)

【历史】2013 年,以太坊的一个核心创新就是允许开发人员编写小块代码,称为智能合约(Smart Contract),这些代码可以部署到以太坊网络,独立于其创建者运行。

在以太坊中,智能合约是用 Solidity 编写的,这是一种设计用于在以太坊虚拟机上运行的高级编程语言。

【定义】智能合约是定义一组规则或“合约”的程序,当用户在区块链上调用时,它会自动执行编码规则。 特别的是,一旦部署了智能合约,它的功能将始终相同,也就是发布是什么样子就是真么样子——它不能被随意修改或控制。

因此,智能合约是运行金融应用程序的理想选择——它们可以作为独立参与者以有保证的、可重复的方式接收或发送加密货币。

现实世界的例子:

智能合约可以很好的替代现实世界中的一些工具。例如:

  • 金融工具

通常,当您在线交易股票或货币时,您需要第三方在交易发生时将这两种资产托管在托管中 - 例如股票经纪人。

智能合约可以充当第三方,允许在没有中间人的情况下进行交易。

  • 财产所有权:

与法律文件相比,智能合约几乎是即时执行的,可以公开访问,并且可以允许分散所有权。

  • 创建代币(发币)

令人难以置信的是,你实际上可以在以太坊上启动新的代币(Token),例如 Tether 或 Chainlink。 同样,您可以使用智能合约启动 NFT 项目,例如 Bored Apes 或 CryptoPunks。

这也是区块链最近如此繁荣的主要原因,因为金融秩序出现了代码化,去中心化,于是引来了一波野蛮增长(这里有利有弊,不展开了)

二、智能合约的重要特征

哪些特征使智能合约能够彻底改变或取代现有的技术模型?

与传统编程语言不同,智能合约具有以下属性:

  1. 透明度:
    智能合约发布到区块链,任何有权访问区块链的人都可以读写

  2. 简单性:

    由于智能合约部署到区块链上的成本很高,并且包含指示金融交易流程的敏感逻辑,因此它们往往比大多数代码库更小更简单。

  3. 不变性

    一旦部署了智能合约,它(通常)就不能被修改,并且无论何时调用都保证其功能相同!这使得智能合约可以作为可靠受信任的第三方运行——因为没有个人控制智能合约,它可以充当金融中介、值得信赖的自动化做市商,或者通过保证公正性而发挥更多作用。部署后,这些智能合约表现为完全透明但可以包含复杂逻辑的独立参与者。

因此,在以太坊上拥有账户的不仅是人类用户,还有两种类型的账户:

  • 由用户管理的

    外部拥有的帐户(EOA)。 也就是我们通常说的”钱包地址“,当你安装Metamask创建账户之后,就有了自己的EOA,钱包地址 ”0x“开通的一串16进制的地址

  • 由其底层智能合约代码管理的
    合约账户。(也就是我们经常看到的Token的合约地址)

三、EOA(地址) 和合约账户(合约)有什么区别?

这两个地址看上去没有什么区别,样子长得都一样。

两种类型的帐户可以做基本相同的事情!

这两种账户类型都可以:

  • 接收或发送可TOKEN(例如ETH,BNB )到任何账户

  • 接收或发送NFT代币例如(无聊猿猴,加密朋克,加密猫等)到任何账户

  • 触发另一个合约账户——允许一个智能合约运行其他智能合约。

  • 生成新的智能合约——让智能合约充当合约工厂!

但合约账户和EOA 账户有着显著的区别:

  • 合约账户完全由其代码控制,而 EOA 则由其关联的私钥控制。

  • 合约账户不能自行实例化操作,也就是只能由开发者去创建——它们只能响应他们收到的交易(通常来自 EOA)。

四、部署前的准备

接下去, 我们将使用虚拟钱包 ( Metamask)、Solidity,Remix,Alchemy ,在Goerli测试网络上创建和部署一个简单的智能合约。

如果你对这些术语还陌生,请复习这三天的内容。

【第三天完】