Chainlink开发快速入门

智能合约是一组指令,可以无需在第三方干预的情况下执行。智能合约代码定义了它如何处理输入,就像任何其他计算机程序的代码一样。

智能合约的一个有价值的功能是它们可以像以太坊钱包一样存储和管理链上资产(如 ETH 或 ERC20 代币)。因为它们有一个像钱包一样的链上地址,所以它们可以做任何其他地址可以做的事情。这使您可以编写自动操作的程序,可以在接收和转移资产时执行这些程序。

智能合约可以连接到真实世界市场资产的价格来提供强大的应用。使它们成为混合智能合约的关键是安全地将智能合约连接到链下数据和服务。这是通过使用预言机来实现的。

Solidity 是在以太坊和 EVM 链上编写智能合约的最流行语言。它由以太坊基金会专门为智能合约开而创造,其他语言也用于在以太坊和 EVM 链上编写智能合约,但 Solidity 是 Chainlink 智能合约使用的语言。

如果您曾经编写过 JavaScript、Java 或其他面向对象的脚本语言,Solidity 应该很容易理解。类似于面向对象的语言,Solidity 被认为是面向合约的语言。

一些网络不是 EVM 兼容的,它们使用 Solidity 以外的语言来编写智能合约。例如 Solana

智能合约的结构类似Javascript的类,有一些不同。

// SPDX-License-Identifier: MIT

pragma solidity 0.8.7;

/**
 * THIS IS AN EXAMPLE CONTRACT THAT USES UN-AUDITED CODE.
 * DO NOT USE THIS CODE IN PRODUCTION.
 */

contract HelloWorld {
    string public message;

    constructor(string memory initialMessage) {
        message = initialMessage;
    }

    function updateMessage(string memory newMessage) public {
        message = newMessage;
    }
}

Solidity 版本,每个Solidity文件必须有版本说明,上面的版本是 0.8.7,使用pragma solidity保留字定义,可以是下面形式

pragma solidity >=0.7.0 <0.9.0;

合约命名,使用contract 关键词定义,类似 Javascript 的 class。

变量分为状态变量(在合约存储中永久保存)和局部变量(只在合约执行时存在)。按类型有string, uint256等。更多可查看 Solidity documentation

可见性修饰符可以定义对这些变量的访问级别。例如 public(谁都可访问), internal(合约本身和派生的合约可访问),private(只合约本身可访问)等。详细可见here.

Constructor (构造函数)与常见的面向对象语言相似。上面代码种,构造函数需要一个string类型的参数。

Function(函数),可以访问和修改合约状态或调用其他外部合约的函数。

Interface(接口),与其他OO语言类似,只定义不实现。实现时需要使用 override ,如上代码,使用了pure 而不是 view,这是因为isSameNum 返回的不是存储变量。

部署智能合约的过程就是代码上链的过程,用一个链上地址标识,一旦部署,代码就不能改变。只要知道地址,就可以通过一个接口或一个库(如, web3js,web3py,ethers等)调用。

LINK token 是继承了ERC20 token标准的ERC677 token,可用于支付给为智能合约检索数据的节点操作员,也用于节点操作员根据合约创建者的要求进行存款。可处理ERC20的钱包都可以存放LINK token,LINK实现的ERC677标准包含了ERC20 token的所有功能。

Oralce(语言机),提供了真实世界和链上智能合约之间的桥梁,智能合约可以信任和使用这些数据源。预言机在促进智能合约效用的全部潜力方面发挥着关键作用。没有可靠的连接到现实世界条件,智能合约就不能有效地为现实世界服务。

Oracle常用于向外部提供数据(Data Feeds)。 Defi 平台,如AAVE,Synthetix通过Chainlink 的oracle 获得精确的实时资产价格,并用在他们的智能合约中。Chainlink的这些DataFeed可以是从不同独立的Chainlink节点汇总而来。每个Data Feed都有一个链上地址和函数,使合约能够从该地址读取数据,例如 ETH / USD feed.

Oralce还包括:

  • 生成可验证随机数 (VRF):使用 Chainlink VRF 在您的智能合约中使用随机性功能。
  • 调用外部 API (任何 API):可请求和接收来自使用了Chainlink合约库的任何 API 的数据。
  • 自动化智能合约功能 (自动化):自动化的智能合约功能和常规合约维护。

Remix 是一个Web IDE。想学习,请访问 Deploying Your First Smart Contract