智能合约ethernaut题解(1)

本文介绍了智能合约的概念,其基于区块链的自动执行特性,支持多种数据类型,如基本数据类型、地址类型等,并通过案例展示了闪电贷款、保险货币交换和去中心化交易所的应用。同时,文中揭示了智能合约中的漏洞和攻击策略,如Fal1out合约的攻击和电话合约的权限滥用问题。

智能合约

定义:

智能合约是一种基于区块链技术的自动化合约,它能够执行、管理和强制合约条款,而无需第三方介入。智能合约通过编码和存储在区块链上的计算机代码来定义合同条件,并在满足条件时自动执行相关操作。这种自动执行使得智能合约具有高度透明性、不可篡改性和安全性

智能合约数据类型(代码结构)

智能合约可以支持多种数据类型,通常包括以下几类:

  1. 基本数据类型:类似于其他编程语言中的基本数据类型,包括整数、浮点数、布尔值等。

  2. 地址类型:用于表示合约或用户的地址。在以太坊等区块链平台上,地址类型通常是一个20字节的十六进制数。

  3. 字符串类型:用于表示文本数据,可以是固定长度的字符串或动态长度的字符串。

  4. 数组类型:用于存储一组相同类型的数据。智能合约通常支持静态数组和动态数组。

  5. 结构体类型:用于定义包含多个字段的自定义数据结构,类似于其他编程语言中的结构体或对象。

  6. 映射类型:用于实现键值对的数据结构,类似于其他编程语言中的字典或哈希表。

  7. 枚举类型:用于定义一组可能的取值,通常用于表示有限状态机中的状态。

  8. 函数类型:用于表示函数指针或回调函数,在一些智能合约编程语言中可以作为参数或返回值。

案例
  1. 闪电贷款

  2. 保险

  3. 货币交换(去中心化交易所)

  4. 房屋买卖

题解

Hello Ethernaut

配置
  1. 注册Metamask

  2. 打开PoW Faucet挖币

  3. 在打开钱包就可以看到余额了

  4. 之后打开Ethernaut (openzeppelin.com) 链接钱包

  5. 点击下方的生成实例 在控制台按要求完成

Fallback

合约代码分析:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
​
contract Fallback {//声明合约Fallback
    mapping(address => uint256) public contributions;//键值address 值(整形) 
    address public owner;//地址
​
    constructor() {
        owner = msg.sender;//创建合约的地址
        contributions[msg.sender] = 1000 * (1 ether);//ETH数额
    }
​
    modifier onlyOwner() {//判断调用者是不是owner 在其他函数调用前使用
        require(msg.sender == owner, "caller is not the owner");
   &n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值