📝 Solidity教程
42篇技术文档📅  最后修改于: 2020-11-02 05:00:47        🧑  作者: Mango
结构类型用于表示记录。假设您想跟踪图书馆中的书籍。您可能需要跟踪每本书的以下属性-标题作者学科书号定义结构要定义Struct,必须使用struct关键字。 struct关键字定义了一个新数据类型,该数据类型具有多个成员。 struct语句的格式如下-例访问结构及其变量要访问结构的任何成员,我们使用成员访问运算符(。)。成员访问运算符被编码为结构变量名和我们希望访问的结构成员之间的句点。您将使用该结...
📅  最后修改于: 2020-11-02 05:01:01        🧑  作者: Mango
映射是数组和结构的引用类型。以下是声明映射类型的语法。哪里_KeyType-可以是任何内置类型,以及bytes和字符串。不允许引用类型或复杂对象。_ValueType-可以是任何类型。注意事项映射只能具有存储类型,通常用于状态变量。映射可以标记为公共。 Solidity会自动为其创建吸气剂。例尝试以下代码以了解映射类型如何在Solidity中工作。使用Solidity First Applicat...
📅  最后修改于: 2020-11-02 05:01:20        🧑  作者: Mango
Solidity允许隐式和显式转换。 Solidity编译器允许在两种数据类型之间进行隐式转换,前提是不可能进行隐式转换并且不丢失任何信息。例如,uint8可转换为uint16,而int8可转换为uint256,因为int8可以包含uint256不允许的负值。显式转换我们可以使用构造函数语法将数据类型显式转换为另一种。转换为较小的类型需要花费较高的位。转换为更高类型的字符会在左侧添加填充位。转换为...
📅  最后修改于: 2020-11-02 05:01:34        🧑  作者: Mango
牢固地讲,我们可以使用wei,finney,szabo或ether作为字面量的后缀,以用于转换各种基于醚的面额。最低单位是wei,1e12代表1 x 1012。时间单位与货币类似,Solidity具有时间单位,其中最低单位是秒,我们可以使用秒,分钟,小时,天和周作为后缀来表示时间。...
📅  最后修改于: 2020-11-02 05:01:52        🧑  作者: Mango
特殊变量是全局可用变量,并提供有关区块链的信息。以下是特殊变量的列表-Sr.No.Special Variable & Description1blockhash(uint blockNumber) returns (bytes32)Hash of the given block – only works for 256 most recent, excluding current, blocks...
📅  最后修改于: 2020-11-02 05:02:22        🧑  作者: Mango
样式指南有助于保持代码布局的一致性,并使代码更具可读性。以下是与Solidity签订合同时遵循的最佳实践。代码布局缩进-使用4个空格而不是制表符来保持缩进级别。避免将空格与制表符混在一起。两个空白行规则-在两个合同定义之间使用2个空白行。一个空行规则-在两个函数之间使用1个空行。如果仅声明,则不需要空白行。最大行长-一行不应超过79个字符,以便读者可以轻松解析代码。包装规则-第一个参数在不加括号的...
📅  最后修改于: 2020-11-02 05:02:50        🧑  作者: Mango
函数是一组可重用的代码,可以在程序中的任何位置调用。这样就无需一次又一次编写相同的代码。它可以帮助程序员编写模块化代码。函数使程序员可以将一个大型程序划分为许多小的和可管理的函数。与任何其他高级编程语言一样,Solidity也支持使用功能编写模块化代码所需的所有功能。本节说明如何在Solidity中编写自己的函数。功能定义在使用函数之前,我们需要对其进行定义。在Solidity中定义函数的最常见方...
📅  最后修改于: 2020-11-02 05:03:04        🧑  作者: Mango
函数修饰符用于修改函数的行为。例如,为函数添加前提条件。首先,我们创建带有或不带有参数的修饰符。将函数主体插入特殊符号“ _;”的位置出现在修饰符的定义中。因此,如果修改的条件,同时调用此函数关系成立,则执行该函数否则,抛出一个异常。请参阅下面的示例-...
📅  最后修改于: 2020-11-02 05:03:18        🧑  作者: Mango
查看功能可确保它们不会修改状态。可以将一个函数声明为view。如果函数中存在以下语句,则认为它们会修改状态,并且在这种情况下编译器将发出警告。修改状态变量。发射事件。创建其他合同。使用自毁。通过通话发送以太币。调用任何未标记为view或pure的函数。使用低级调用。使用包含某些操作码的内联汇编。默认情况下,getter方法是视图函数。请参阅以下使用视图函数的示例。例使用Solidity First...
📅  最后修改于: 2020-11-02 05:03:33        🧑  作者: Mango
纯函数确保它们不读取或修改状态。一个函数可以声明为pure。如果函数中存在以下语句,则认为它们正在读取状态,并且在这种情况下编译器将发出警告。读取状态变量。正在访问address(this).balance或<address> .balance。访问块tx,msg的任何特殊变量(可以读取msg.sig和msg.data)。调用任何未标记为纯函数。使用包含某些操作码的内联汇编。如果发生错误,纯函数可...
📅  最后修改于: 2020-11-02 05:03:47        🧑  作者: Mango
后备函数是合同可用的特殊函数。它具有以下功能-当在合同上调用不存在的函数,将调用它。需要在外部标记。它没有名字。它没有参数它不能返回任何东西。每个合同可以定义一个。如果未标记为应付,如果合同收到无数据的纯醚,它将引发异常。以下示例显示了每个合同的后备函数的概念。例...
📅  最后修改于: 2020-11-02 05:04:01        🧑  作者: Mango
在同一个作用域中,可以为同一个函数名具有多个定义。函数的定义必须在参数列表中的参数类型和/或数量上彼此不同。您不能重载仅在返回类型上有所不同的函数声明。以下示例显示了Solidity中函数重载的概念。例使用Solidity First Application一章中提供的步骤运行上述程序。首先单击callSumWithTwoArguments按钮,然后单击callSumWithThreeArgume...
📅  最后修改于: 2020-11-02 05:04:15        🧑  作者: Mango
Solidity还提供内置的数学功能。以下是常用的方法-addmod(uint x,uint y,uint k)返回(uint)-计算(x + y)%k,其中加法以任意精度执行,并且不会在2256处回绕。mulmod(UINT的x,UINT Y,UINT K)返回(UINT)-计算(X * Y)%k其中加入与任意精度进行,并在2256不回绕。以下示例显示了Solidity中数学函数的用法。例使用S...
📅  最后修改于: 2020-11-02 05:04:29        🧑  作者: Mango
Solidity还提供内置的加密功能。以下是重要的方法-keccak256(字节内存)返回值(bytes32)-计算输入的Keccak-256哈希值。sha256(字节内存)返回(bytes32)-计算输入的SHA-256哈希值。maturemd160(字节内存)返回(字节20)-计算输入的RIPEMD-160哈希值。sha256(字节内存)返回(bytes32)-计算输入的SHA-256哈希值。...
📅  最后修改于: 2020-11-02 05:04:45        🧑  作者: Mango
提款方式可确保不会进行直接转接呼叫,这会构成安全威胁。以下合同显示不安全地使用转移电话发送以太币。通过使最丰富的合同成为后备函数失败的合同,可以使上述合同处于无法使用的状态。当后备函数失败时,beginRichest()函数也会失败,并且合同将永远卡住。为了减轻这个问题,我们可以使用提款方式。在提款方式中,我们将在每次转帐之前重置待处理金额。这将确保只有主叫方合同失败。...