首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏深入浅出区块链技术

    Web3智能合约交互实战

    因此,我们需要一种友好的方式(比如一个web页面)来与智能合约交互,于是问题的答案就是web3.js。 (为了更好的阅读体验,请在文末点击“阅读原文”跳转到知乎阅读) Web3.js Web3.js是以太坊官方的Javascript API,可以帮助智能合约开发者使用HTTP或者IPC与本地的或者远程的以太坊节点交互 实际上就是一个库的集合,主要包括下面几个库: web3-eth用来与以太坊区块链和智能合约交互 web3-shh用来控制whisper协议与p2p通信以及广播 web3-bzz用来与swarm协议交互 创建智能合约 目前以太坊官方全力支持的智能合约开发环境是Remix IDE,我们在合约编辑页面编写如下代码: pragma solidity ^0.4.21;contract InfoContract ---- 以上就是如何使用 Web3 在浏览器中与智能合约进行交互的简单示例,目的是理解前端代码是如何与智能合约进行交互的。后续还将编写更复杂一些示例,例如如何监控合约中的事件等。

    2.8K20发布于 2019-08-01
  • 来自专栏陈冠男的游戏人生

    智能合约:跨合约调用漏洞

    漏洞概述 在 solidity 中合约之间的相互调用有两种方式: 使用封装的方式,将合约地址封装成一个合约对象来调用它的函数 直接使用函数来调用其他合约 solidity 提供了 call()、delegatecall 在使用第二种方式时,如果处理不当很可能产生致命的漏洞 —— 跨合约调用漏洞,主要就是 call() 注入函数导致的 call() 函数对某个合约或者本地合约的某个方法的调用方式:

    .call receiver.call.value(0)(bytes4(keccack256(_custom_fallback)),_from,_amount,_data); } 代码含义:如果目标地址是智能合约 ,并调用该合约的任意 public 函数 代码调试 在这里复制代码到 Remix IDE https://cn.etherscan.com/address/0x461733c17b0755ca5649b6db08b3e213fcf22546 () 三个函数为合约间调用提供了很大的便利,但是存在很大隐患,所以防范跨合约调用漏洞的方法就是减少对这三个函数的使用。

    3K31发布于 2020-05-14
  • 来自专栏深入浅出区块链技术

    如何调试EVM智能合约 #2 :部署智能合约

    译文出自:登链翻译计划[1] 译者:翻译小组[2] 校对:Tiny 熊[3] 本文是关于调试 EVM 智能合约系列的第 2 篇,本系列包含 7 篇文章: 第 1 篇:汇编表示[4] 第 2 篇:部署智能合约 它需要 3 个参数: 第一个是 Stack(0),指令复制当前智能合约代码到 EVM 内存的 Stack(0) 位置(这里 Stack(0)=0),所以它将复制到内存的 0x00 槽。 事实上,在执行这条指令后,如果我们在调试器中查看 EVM 的内存状态,会发现内存从0x00 到 0x3f被填满。 这是我们存储在 EVM 内存中的智能合约的代码。 在我们的例子中,这就是智能合约的代码!。 智能合约结束了它的执行。 总结 最后总结一下合约部署情况: 它像每个智能合约一样存储了空闲内存指针。 它复制了由交易数据提供的 2 个参数,并将其存储到内存中。

    99320编辑于 2022-11-07
  • 来自专栏区块链开发

    Web3项目智能合约开发

    Web3 项目中,智能合约是其核心组成部分,负责定义应用程序的逻辑和数据存储。智能合约是部署在区块链上的自动化执行的代码,一旦部署就难以更改,因此开发过程需要格外谨慎。 以下是 Web3 项目智能合约开发中需要注意的关键方面。1. 语言选择:Solidity: 目前最流行的智能合约编程语言,主要用于以太坊和其他兼容 EVM(以太坊虚拟机)的区块链平台。 Vyper: 一种新的智能合约编程语言,旨在提高安全性和可读性,也用于以太坊。 3. 开发流程:需求分析: 明确智能合约的功能和逻辑,编写详细的规格说明。合约设计: 设计合约的结构、状态变量、函数和事件。代码编写: 使用选定的编程语言编写智能合约代码。 常用的方法是使用代理合约模式。7. gas 优化:智能合约的执行需要消耗 gas,因此需要优化合约代码,减少 gas 消耗。以上只是一个简单的示例,实际的智能合约开发会更加复杂。

    48610编辑于 2024-12-27
  • 来自专栏NFT链游的应用

    3M合约助手系统小助手智能合约项目开发逻辑介绍

    1,什么是智能合约?  智能合约就是控制合约的协议  智能合约就是一种特殊协议,意在提供,验证或实施合同的履行和协商。智能合约允许在没有第三方的情况下执行可靠的交易。这些交易是可追踪的,不可逆转的。 智能合约包含合约条款的所有信息,并自动执行所有设想的操作。  2,智能合约怎么出现的?   比特币奠定了区块链上合约的基础。但,比特币不能满足智能合约所需。以太坊的出现,让智能合约能够实行,进一步推动了交易的落实。  3智能合约怎么工作的?  主要原理可以参考自动售货机。   01.区块链为智能合约的运用提供技术基础1993年就诞生的智能合约为何现在才开始落地?因为能支撑它的技术——区块链刚刚问世。试想一段代码怎么保证订立合约的双方信任彼此? 区块链的去中心化、公开性、不可篡改等优势,用技术手段解决了智能合约的信任问题,天然适用于智能合约。  

    71420编辑于 2022-06-22
  • 来自专栏圆方圆学院精选

    【许晓笛】 EOS 智能合约案例解析(3)

    详解 EOS 智能合约的 abi 文件 这次向大家介绍 eosio.token 智能合约的最后一个文件 —— abi文件。 abi 文件格式类似 JSON,具备很好的可读性,有利于智能合约工程师与上层应用工程师之间的工作衔接。 actions action 部分的作用是声明智能合约有哪些可以调用的 action。如下所示。 ricardian_contract 是李嘉图合约,刚刚被加入到 EOS 智能合约中,官方还没有进一步说明。 tables tables 列出了 智能合约中需要建立的数据表名称,以及数据表中所储存的结构体名称。

    63340发布于 2018-11-11
  • 了解智能合约

    什么是智能合约智能合约,又称加密合约,是在一定条件下可以直接控制数字货币或资产在各方之间转移的一种计算机程序。 设想一下人寿保险,智能合约在保单持有人去世后向指定受益人支付利益。合约可以对在线死亡登记表进行实时检查以确定支付时间。智能合约是不可靠的,自主的,并且自给自足的。 存储和执行智能合约 比特币和以太坊在智能合约的存储和执行方面存在差异。以太坊用户通过事物将智能合约加载到包含合约逻辑的有效负载网络中。 事务不发送到特定的地址,相反,网络上处理事务的节点识别“ 智能合约有效负载”,并创建一个智能合约地址。 智能合约的优势 智能合约为个人用户提供了许多必要的优势,其中包括: 自主性:使用智能合约意味着由您来达成协议:无需依赖经纪人、律师、或者其他机构进行确认。

    1.6K80发布于 2018-03-20
  • 来自专栏Pseudoyu

    Solidity 智能合约开发 - 玩转 Web3.py

    前言 在前文《Solidity 智能合约开发 - 基础》中,我们学习了 Solidity 的基本语法,并且了解了可以通过 Brownie 与 HardHat 等框架进行调试。 Web3 w3 = Web3(Web3.HTTPProvider("HTTP://127.0.0.1:7545")) Solidity 合约编译 合约源码 // SPDX-License-Identifier get abi abi = compiled_sol["contracts"]["SimpleStorage.sol"]["SimpleStorage"]["abi"] 本地 Ganache 环境 智能合约的调试需要将合约部署到实际的链上 " Solidity 合约部署 创建合约 我们可以通过 web3 库创建合约。 参考资料 Solidity 智能合约开发 - 基础 ethereum/web3.py Solidity, Blockchain, and Smart Contract - Beginner to Expert

    1.8K20编辑于 2023-04-11
  • 来自专栏极客编程

    solidity智能合约

    智能合约 Solidity里的智能合约是面向对象语言里的类。它们持久存放在状态变量和函数中,(在里面)可以通过solidity修改这些变量。 在不同的智能合约(实例)中调用一个函数(的过程),(实际上)是在EVM(Ether虚拟机)中完成一次调用,并且完成(一次)上下文切换,(此时)状态变量是不可访问的。 创建合约       合约可以从“外部”创建,也可以由Solidity合约创立。在创建合约时,它的构造函数(函具有与合约名称同名的函数)将被执行。    ,   {from: myAccount, gas: 1000000} ); 在内部,在合约的代码后要接着有构造函数的参数,但如果你使用web3.js,就不必关心这个。  returns (uint a, bytes3 b){     a = data[arg1][arg2][arg3].a;     b = data[arg1][arg2][arg3].b;} 注意

    1.6K30发布于 2018-09-04
  • 来自专栏服务端技术杂谈

    智能合约开发

    以太坊则是“图灵完备的”,让我们就像使用任何高级语言一样来编写几乎可以做任何事情的程序(智能合约)。 EVM(Ethereum Virtual Machine)以太坊虚拟机是以太坊中智能合约的运行环境。 而EVM运行在以太坊节点上,当我们把合约部署到以太坊网络上之后,合约就可以在以太坊网络中运行了。 以太坊虚拟机上运行的是合约的字节码形式,需要我们在部署之前先对合约进行编译。 (钱包)理解为一个开发者工具,它提供账户管理、挖矿、转账、智能合约的部署和执行等等功能。 智能合约的部署是指把合约字节码发布到区块链上,并使用一个特定的地址来标示这个合约,这个地址称为合约账户。 合约部署之后,当需要调用这个智能合约的方法时只需要向这个合约账户发送消息(交易)即可,通过消息触发后智能合约的代码就会在EVM中执行了。

    1.2K60发布于 2018-04-18
  • 来自专栏Web 技术

    Web3 系列开发教程:创建第一个智能合约(1)什么是智能合约

    什么是智能合约? 以太坊在 2013 年的核心创新是允许开发人员编写称为智能合约的小代码块,这些代码可以部署到以太坊网络,独立于其创建者运行。 在以太坊中,智能合约是用 Solidity 编写的,这是一种设计用于在以太坊虚拟机上运行的高级编程语言。智能合约也成为了区块链开发领域主要的研究方向之一。 智能合约是定义一组规则或“合约”的程序,当用户在区块链上调用时,它会自动执行编码规则。 特别地,一旦部署了智能合约,它就不能被修改或控制。 智能合约的特征 哪些特征使智能合约能够彻底改变或取代现有的技术模型呢?与传统编程语言不同,智能合约具有以下属性: 透明度:智能合约发布到区块链,任何有权访问区块链的人都可以读写。 生成新的智能合约——让智能合约充当合约工厂! 但是,合约账户有一些限制: 合约账户不能自行实例化操作——它们只能响应他们收到的交易(通常来自 EOA)。

    76640编辑于 2022-12-17
  • 来自专栏深入浅出区块链技术

    智能合约实现白名单的3个机制

    现在主要有 3 种实现白名单机制的方法,本文介绍它们,并谈谈它们的优点和缺点。 /db/freeClaimMerkle.json"); 我们需要通过 solidity 函数将 hash 根存储在合约中。然后用库 MerkleProof 进行链上验证。 之后,用户就可以使用签名信息传给合约进行铸币。 但你可能会问,如何确保没有人可以伪造签名信息?原因是,使用私钥签署信息后会得到一个 hash 信息。然后,你可以用 hash 信息生成公钥地址。 因此,在合约处存储公钥地址,在后端用私钥签署消息,就可以确保没有人可以伪造消息。 然而,为了防止重放攻击,你可以使用一个 nonce 来确保签署的消息不会被恶意使用。 因此,整个签名过程将如下所示: import Web3 from "web3"; import dotenv from "dotenv"; // Establish web3 provider dotenv.config

    1.6K20编辑于 2022-11-07
  • 来自专栏极客编程

    web3j的maven插件(solidity智能合约

    web3j maven插件用于基于solidity智能合约文件创建java类。 将以下<plugin>配置添加到pom.xml文件中: <plugin> <groupId>org.web3j</groupId> <artifactId>web3j-maven-plugin <abi>src/abi/generated</abi> </outputDirectory> </configuration> </plugin> 将你的Solidity合约文件添加到文件夹 开始生成过程: > mvn web3j:generate-sources [INFO] --- web3j-maven-plugin:0.1.2:generate-sources (default-cli 下一步是与智能合约进行交互。请参阅web3j主页中文版的智能合约部署和交互。 有关多模块项目配置,请参阅@fcorneli的帖子。

    1.9K30发布于 2018-12-18
  • 来自专栏系统开发案例

    智能合约系统开发web3实现核心

    Web3的核心要素:区块链、加密资产、智能合约和预言机  Web3模式的去中心化技术栈不断发展壮大,涵盖区块链、智能合约、预言机、加密钱包以及存储网络等各种技术。 区块链网络是Web3的支柱,提供了安全的执行层,可以在其中创建、发行并交易加密资产,并且开发可编程的智能合约。区块链是Web3的结算层。   智能合约和去中心化应用(dApp)  智能合约是区块链上不可篡改的程序,利用“如果x是真实的,则执行y”的代码逻辑自动执行交易。可编程的智能合约可以创建去中心化的应用,或者叫“dApp”。 预言机  智能合约要充分实现其潜力,就必须能够与区块链网络以外的数据和系统交互。预言机能够将区块链连接至真实世界中的数据和系统,并提供关键的基础架构,打造一个具有互操作性且统一的Web3生态。   预言机对Web3技术栈进行了扩充,传输链下数据和服务,以推动智能合约创新;实现跨链互操作性,以确保各条区块链无缝连接。

    78200编辑于 2022-10-09
  • 来自专栏编舟记

    智能合约和 DApp

    它标榜成为世界的计算机,然后在这台世界计算机上运行的就是智能合约智能合约相当于后台程序,和前端程序一组合(sdk/rpc)也就是这里的DApp。 智能合约和 DApp 大侠留步,智能合约(Smart Contract)是个什么东西,和AI有关系?嗯,没半毛钱关系。 ? 公平 去中心的智能锁 区块链上的智能合约承载了原来中间商信任担保的角色,也是我们常常说的“去中介”和“去信任”的由来。 在这个游戏当中,你可以收藏,交易和繁殖以太喵,有别于比特币这类加密货币,以太喵更像加密收藏品,这意味着你的 CryptoKitty 始终属于你,合法性由智能合约(Smart Contract)确定,而智能合约是无法关停的 以太猫 FoMo3D 传销集大成者,前段时间火的不能再火的DApp FoMo3D,它的网站名称叫做 exitscam.me,妥妥的骗局?

    1.7K10发布于 2018-10-11
  • 来自专栏区块链+系列

    智能合约——运作方式

    像区块链行业的许多想法一样,一般的混乱笼罩着所谓的“智能合约”。 智能合约是基于二代区块链平台正在研发的内置模块,实现自动化的掌控资产的转移。 智能合约使得合约处理过程自动化,由于不需要任何第三方托管机构介入,从而提高合约执行效率,节省费用,任何相关方或合约的一方,在合约条款失效前都无法控制或更改资产,保证了合约的可靠性及安全性,使合约方几乎可以做到零纠纷 智能合约0.0.png 在一个简单的例子中,以太坊用户可以使用智能合约在特定日期向朋友发送10以太。 在这种情况下,用户将创建一个合同,并将数据推送到该合同,以便它可以执行所需的命令。 智能合约的运作方式 值得注意的是,在网络可以将价值从一个人转移到另一个人的意义上,比特币是第一个支持基本智能合约的人。节点网络仅在满足某些条件时才验证事务。 但是,比特币仅限于货币使用案例。 数量上的优势 推断最后一点,智能合约可能需要其他智能合约的帮助。 当有人在炎热的夏天对温度进行简单的下注时,可能会触发一系列合约

    1.6K00发布于 2018-10-22
  • 来自专栏陈冠男的游戏人生

    智能合约:重入漏洞

    漏洞分析 以太坊智能合约的特点之一是能够调用其他外部合约的代码,然而这些外部合约可能被攻击者劫持,迫使合约通过回退函数进一步执行代码,包括回调本身。 但是有个问题是他没有先对用户的代币余额进行清零,而智能合约进行转账的时候会调用收款方 fallback 函数 合约可以有一个未命名的函数 —— Fallback 函数。 如果在一个到合约的调用中,没有其他函数与给定的函数标识符匹配(或没有提供调用数据),那么这个函数(fallback 函数)会被执行。 另外每当合约收到以太币(没有任何数据),这个函数就会执行。 如果不存在这样的函数,则合约不能通过常规交易接收以太币 如果构造一个 fallback 函数,函数里面也调用对方的 withdraw 函数的话,那将会产生一个循环调用转账功能,存在漏洞的合约会不断向攻击者合约转账 若外部函数是被攻击者所操纵的合约,就存在隐患 外部函数操作优先于对状态的写操作 防范的关键在于编写合约的时候把写操作放在外部函数调用之前

    2.3K31发布于 2020-05-14
  • 来自专栏深入浅出区块链技术

    智能合约审计指南

    译文出自:登链翻译计划[1] 译者:翻译小组[2] 校对:Tiny 熊[3] 照片来自Unsplash[4] 背景 区块链技术正在改变各行各业的游戏规则,而智能合约是这一进程的关键部分 本指南将引导你了解审计智能合约的基础知识和一些常见的智能合约漏洞。 第 1 部分:为什么要审计你的智能合约智能合约之所以重要,有很多原因。 第 3 部分:智能合约审计的不同阶段 智能合约审计的不同阶段包括: 确定审计的目标和目的: 这一步你要设定智能合约审计的目标和目的。 通过使用多层安全保护,攻击者要破坏智能合约中存储的数据就更难了。 第 8 部分:误用转账和发送 谈到智能合约,为了避免任何误用,有几件关键的事情需要记住。首先,最重要的是要记住,智能合约是不可改变的。 参考资料 [1] 登链翻译计划: https://github.com/lbc-team/Pioneer [2] 翻译小组: https://learnblockchain.cn/people/412 [3]

    1.6K20编辑于 2022-11-07
  • 来自专栏区块链与Web3.0

    Solidity开发智能合约

    0 Solidity和智能合约Solidity开发可运行的智能合约步骤:源代码通过编译成字节码(Bytecode),同时会产生二进制接口规范(ABI)通过交易将字节码部署到以太坊网络,部署成功会产生一个智能合约账户通过 web3.js+ABI去调用智能合约中的函数来实现数据的读取和修改下面开始简单例子入手Solidity。 hdkey } from 'ethereumjs-wallet'其他常用接口light.js - 为轻客户端优化的高级反式JS库flex-contract 和 flex-ether - 零配置的高级库,用于与智能合约进行交互并进行交易 ')2.2 Web3j:Java Ethereum Dapp API轻量级、高度模块化、反应式、类型安全的Java和Android库,用于处理智能合约并与以太坊网络上的客户端(节点)集成。 - Ruby Web3Eventeum - 由Kauri用Java编写的以太坊智能合约事件和后端微服务之间的桥梁Ethereum-jsonrpc-gateway - 一个网关,允许您运行多个以太坊节点以实现冗余和负载平衡

    69410编辑于 2024-07-28
  • 来自专栏网络安全攻防

    以太坊智能合约

    文章前言 智能合约是一个运行在安全环境下的计算机程序,它可以直接控制数字资产,本篇文章我们主要介绍如何在公链环境中编译、部署、运行合约~ 合约部署 合约创建 以太坊支持使用solidity编写的智能合约 ,用户可以使用Solidity编写一个自己所需要的之智能合约,例如: pragma solidity ^0.8.4; contract test{ function multiply(uint a) public returns(uint d){ return a *7; } } 合约编译 关于合约的编译我们可以使用solc也可以使用在线编译工具Remix来对合约进行编译操作 之后开始部署合约(这里增加一个回调函数为了看效果) var testContract = web3.eth.contract([{"constant":false,"inputs":[{"name":" 至此,合约在链上的部署流程演示完毕~ 文末小结 本篇文章只是对如何在公链环境中部署智能合约做了一个简单的介绍,而我们知道智能合约是运行在EVM上的,后续我们将对以太坊虚拟机源码进行分析,这里暂且不对此展开分析

    1.5K11发布于 2021-07-21
领券