如何编写和部署您的第一个智能合约?

已发表: 2020-02-13

智能合约是当今区块链技术的领先趋势。 如果您正在考虑在该领域建立职业生涯,本文将帮助您了解编写第一个智能合约所需的所有知识

从世界顶级大学学习在线软件课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

目录

如何编写你的第一个智能合约?

今天的数字时代允许两方在没有第三方参与的情况下签订协议。 这些数字合约由区块链处理并存储在公共数据库中。 因此,交易是可追踪且不可逆转的。

如果你想编写你的第一个智能合约,下面编译的资源会让你走上正轨。

阅读:2020 年 10 个区块链趋势和预测

定义智能合约

“智能合约”一词最早由美国计算机科学家 Nick Szabo 于 1996 年提出。它是一种计算机或数字协议,可促进、验证和强制执行合同。 作为通用计算,智能合约驻留在区块链或分布式账本上。

换言之,合约以计算机程序的形式内置于代码中。 并且指定的参与者获得执行程序功能的权限。 为成功执行智能合约,应满足预定义规则。

以采购订单 (PO) 为例。 这是买卖双方之间的简单合同。 执行采购订单必须满足某些条件。 这些规格包括买方成功付款、供应商按照购买时商定的条款交付货物、退货条件等。

因此,买方可以下订单,供应商可以以数字格式完成订单。 在计算网络上,所有的动作都称为事务。 并且所有交易都由网络验证和执行。 一旦确认,交易将无法恢复。

阅读:学习区块链的先决条件。 这不是你想的那样

建立智能合约的要求

有多种编程语言可用于构建智能合约。 语言的选择主要取决于区块链平台。 例如,Solidity、Vyper、eWASM 和以太坊字节码是以太坊区块链平台最流行的一些智能合约语言。

智能合约开发环境

在你编写你的第一个智能合约之前,为它的开发设置操场。 如果没有开发环境的知识,深入区块链世界将是一件棘手的事情。 您可以从以下备选方案中进行选择。

  • Remix IDE:它是一个用于构建和测试智能合约的集成开发环境。 强烈建议初学者使用这个完全在线的选项,因为它不需要安装。 此外,它对智能合约的原型设计和快速验证带来的挑战更少。
  • 本地设置:本地机器为智能合约开发提供了另一种资源。 这些工具为企业级应用程序提供了更大的灵活性。 尽管设置此环境需要时间,但为分布式应用程序或 DApp 选择工具是一个相当简单的过程。

智能合约的结构

让我们探索使用 Solidity 编程语言开发的采购订单合同。

Solidity 智能合约遵循标准结构,包括“数据”和“功能”。 虽然数据保持智能合约的当前状态,但该函数应用逻辑来转换此状态。

合同以名为“ pragma directive ”的声明开头。 关键字“pragma”启用编译器检查或功能。 考虑下面的陈述:

实用性 >=0.4.0 <=0.6.0

该声明旨在确保智能合约不会使用 0.40 之前和 0.60 之后的编译器版本进行编译。

接下来是“合同声明”。 以下语句使用“contract”关键字,并通过名称“Purchase Order”标识一个空合约。

合同 PurchaseOrder{}

存储数据

每个合同或计算机程序都存储有数据。 变量提供了一种存储、标记、检索和操作数据的方法。 Solidity 中存在两种类型的变量——值和参考。 值类型变量在用作函数参数时总是被复制,例如布尔值、整数等。

而引用类型变量存储数据位置。 一个参考变量的任何变化都会影响另一个变量。 因此,必须小心管理它们。 示例包括数组和结构。

添加数据

在采购订单中,通常会有与其关联的产品数量。 所以,现在,让我们在智能合约中添加一个数据变量。 我们将添加一个变量 product_quantity,假设它只有正值。

首先,我们介绍一个用 uint256 表示的无符号整数。 这里,无符号(u)表示只能表示正整数的变量类型,256表示存储256位。

合同采购订单{uint256 product_quantity;}

构造函数

构造函数在部署合约时使用一些值初始化智能合约。 假设产品数量设置为 100。

构造函数()公共{product_quantity = 100;}

需要注意的是,关键字或访问修饰符“public”指定该功能不受限制。 因此,任何人都可以访问它。

添加功能

添加函数使您的程序具有交互性。 这些是受控功能,前面有关键字“功能”。 声明包括函数名、访问修饰符、状态修改器和返回值。

为了读取存储的值,我们添加了“get 函数”。 使用“get_quantity”,此函数可以获得检索或读取存储数据的能力。 看看下面给出的声明。

function get_quantity() public view returns(uint256){return product_quantity;}

进一步分解,我们看到:

  • 函数名:get_quantity(“()”表示不传参数)
  • 访问修饰符:public(访问不受限制)
  • State Mutator:view(表示该函数不会改变合约的状态,只是读取)
  • Returns:定义函数返回什么,即uint256类型的变量

设置器函数

当您想要写入或更新数据时,setter 函数就会出现。 该函数从用户那里获取一个输入参数,并根据该参数更新“product_quantity”变量的值。 设置函数(update_quantity)是这样插入的:

update_quantity(uint256 value) public {product_quantity = product_quantity + value;}

现在,插入上面给出的所有语句来编写你的第一个智能合约

部署智能合约

一旦你完成了前面提到的步骤,就该测试你的智能合约了。 您可以使用 Remix IDE 来做同样的事情,它提供了 Solidity 编译器功能来在线创建、测试和验证您的智能合约。

以下是使用 Remix Online IDE 设计和部署智能合约的分步说明:

  1. 单击加号图标以创建一个新的(空)文件
  2. 点击打开空文件
  3. 将您的合同粘贴到此文件中
  4. 转到左侧菜单,然后单击文件图标下方的第二个图标。 这样,solidity编译器选项就会出现
  5. 进入编译器标签选择编译器版本
  6. 点击文件编译智能合约
  7. 编译完成后,点击编译器详情按钮,了解字节码和应用二进制接口。 字节码包含了以太坊的操作代码和转换编译后的智能合约逻辑
  8. 在左侧菜单中,单击编译图标下方的图标以部署您的智能合约

与已部署的合约交互

合约中提到的公共方法提供了与已部署合约交互的方式。 在采购订单的上下文中,“update_quantity”和“get_quantity”是可用的两种交互方法。 您也可以使用输入框输入您的参数。 请记住,任何更改合约变量的操作都会导致交易。

至此,我们介绍了如何编写您的第一个智能合约的基础知识,以及如何在在线开发环境中使用 Solidity 编程语言对其进行测试和部署。 我们还了解与智能合约交互和发起交易的过程。 因此,今天就应用您的学习并创建智能合约。 毕竟,熟能生巧!

包起来

区块链技术的职业生涯正在兴起,区块链永远极大地改变了技术行业的面貌。 如果您有兴趣成为区块链开发人员并构建智能合约和链码,请查看 IIIT-B 和 upGrad 的区块链技术高级证书计划

智能合约有哪些可能的应用?

智能合约是自动执行合约条件的计算机程序。 他们使用区块链技术,这是一种分布式数据库,可实现安全、透明和防篡改的交易。 汽车租赁、酒店预订和活动门票只是如何使用智能合约的几个例子。

为什么智能合约被认为比常规合约更安全?

由于智能合约是在区块链网络上实施的,因此它们被认为比传统合约更安全。 区块链是一种加密保护的分布式数据库。 这意味着区块链上的信息不能被篡改或黑客攻击。 因此,可以保证智能合约的执行是精确和可靠的。 它们也是公开的和可审计的,这意味着区块链上的每个人都可以查看合约的条件并检查它是否正在执行。 另一方面,智能合约可以帮助降低欺诈和冲突的风险。 最重要的是它们具有很多功能并且易于使用。

为什么智能合约越来越流行?

智能合约最重要的优势之一是它们可以帮助组织自动化程序并降低成本。 例如,一家公司可以利用智能协议在交付后立即向其供应商付款。 这将减少公司手动处理付款的需要,从而节省时间和金钱。 它还可用于在公司与其客户之间建立信任。 例如,智能合约可用于构建安全的在线支付系统。 这将允许客户进行付款,而不必担心他们的个人信息被泄露。 最后但同样重要的是,它可用于为个人和企业构建数字身份。 因此,企业将能够验证其客户的身份并保护他们免受欺诈。