以太坊开发者指南(三):智能合约详解

一起学:以太坊智能合约开发 课程介绍 无论在科技圈还是金融圈,“区块链”俨然成了最热的词汇。2016年,区块链写入了国家的十三五规划中;2017年,央行基于区块链技术的数字票据交易平台测试成功;同年,工信部发布了首个区块链参考架构标准。
经过2017年如火如荼的投资盛宴,区块链开始逐渐走向应用落地,业内都在积极探索使用场景。如金融领域的资产贸易、支付系统、金融服务,其他领域的电子商务、社交通讯、游戏娱乐等等。同时,BAT、迅... 阅读详情

以太坊开发者指南(三):智能合约详解

欢迎阅读本系列的第三部分!在第一部分中,我们介绍了区块链的基础知识;第二部分则深入探讨了以太坊账户及其如何参与网络活动。本部分将在此基础上,引入智能合约这一核心概念。

智能合约简介

以太坊区块链承载着巨大的价值。在之前的文章中,我们讨论了以太币如何通过交易在用户之间流转。然而,该网络的能力远不止于此,它能够实现更为复杂的交互,而这些复杂用例正是通过智能合约得以实现的。

首先,让我们给出一个简单的定义:智能合约是部署到区块链上的代码(即计算机程序)。其流行语中的“合约”一词,体现了这些程序的相对永久性,因为它们决定了资产的转移方式;而“智能”则彰显了它们的可编程性。为简洁起见,我们通常将其简称为“合约”,本文也将沿用这一称呼。

可以将合约和个人账户视为该系统中的两类参与者。合约能够通过编程指令与区块链进行交互,其方式与个人账户极为相似:它们可以发送和接收以太币,或与其他合约进行交互。此外,合约还能更进一步,管理一些内部状态——我们将在后续部分深入探讨这一概念。

注意:多年来,个人账户的描述方式多种多样。外部拥有账户(EOA)是以太坊白皮书中定义的原始术语,您很可能会再次遇到这个缩写。

合约可以根据您的需求进行复杂或简单的设置。您可以将其开放给所有人使用,也可以限制仅允许您的账户使用,或者要求用户拥有一定余额或特定资产的所有权才能进行交互。无论哪种方式,只要您的合约部署到以太坊主网,其代码都是公开的!

公开源代码?

在这一范式中,公开源代码是一项基本要求。用户(或其他合约)可能会利用您的合约来转移实际价值。他们需要能够相信您的合约能够按照您所宣称的方式运行,而要做到这一点,他们需要能够自行阅读您的合约代码。

实际上,大多数用户并不会阅读他们所交互的每个智能合约的源代码。但如果源代码没有经过验证(例如,在Sourcify或Etherscan上)和由行业资深人士审查(例如,进行审计),大多数用户都会避免与该合约进行交互。

考虑另一种情况:如果合约是一个黑匣子,那么就没有什么能够阻止恶意行为者发布看似无害但实际上却赋予他们转移用户资产能力的合约。如今,恶意行为者确实可以部署这样的合约,并试图通过社会工程学手段引诱用户,但钱包界面通常会在代码未经验证时警告用户,并提醒他们谨慎操作。

我的商业模式怎么样?

您是否好奇,如果所有智能合约代码都是开源的,该如何保持竞争优势?公有链确实迫使您在这方面发挥创造力。

不过,这并不一定意味着限制会更加严格。由于每个合约都是开源的,您可以构建一个平台,供其他人在其上进行开发,或者在其他人已经完成的基础上进行进一步开发。例如,Safe是一个开源多重签名钱包,其丰富的辅助金融工具生态系统正在围绕它构建。任何人都可以构建与Safe兼容的产品,而无需获得Safe团队的任何许可。

开源许可证也千差万别。业内另一家知名企业Uniswap推出了一款具有独特延时许可证的产品。其代码作为开源软件可立即使用,但商业复用期限为两年。这一领域必将继续探索创新的许可模式。

合同是什么样的?

以太坊智能合约可以用多种专门为此目的而创建的编程语言编写。每种语言都有其优缺点,但任何一种都可以满足需求;最终,代码只需编译为EVM(以太坊虚拟机)可以读取的字节码即可。流行的语言选项包括Solidity、Vyper以及新加入的Fe。

每种语言都值得一看,但下面是一个用最成熟的语言Solidity编写的“Hello, World”风格的示例。此示例合约名为Billboard,它存储一条消息,并包含一个用于更新该消息的函数。正如所写,任何人都可以不受限制地更新该消息。

您可以想象,一个网站可能会显示存储的所有消息,并提供一个输入框,让用户输入新消息以替换当前消息。智能合约与其用户界面的结合,就是所谓的去中心化应用程序,简称“dapp”。

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

contract Billboard {
    string public message;
    
    constructor(string memory _message) {
        message = _message;
    }
    
    function writeBillboard(string memory _message) public {
        message = _message;
    }
}

如果您熟悉面向对象编程,那么合约看起来和类的概念非常相似。实际上,当合约被部署时,一个实例就会被提供给所有人使用——这类似于“单例”类。

对于所有用户来说,已部署的合约在任何给定区块都具有特定的状态。换句话说,公告牌上的message对每个人来说都是相同的。合约的状态可以追踪各种事物;例如,在代币合约中,状态可能包括谁拥有多少资产。

在Solidity合约中,constructor方法仅在合约首次部署时执行一次。继续类比,constructor可能会让您想起Python类中的__init__方法或其他语言中类似的初始化方法。因此,部署此合约的任何人都可以决定起始广告牌消息。

您可能已经注意到,Solidity的语法与JavaScript类似,包括使用驼峰命名法、分号和内联注释。此外,它们之间也存在一些显著的差异:类型系统、编译器版本声明和新的关键字。希望这个例子足够简单,能够传达相关概念,但该语言的复杂性超出了本文的讨论范围。

合约如何上链?

在本系列的前面部分,您可能还记得读到过,更改以太坊区块链状态的唯一方法是通过交易。对于部署新合约来说,这同样适用。

在编写合约时,开发人员会频繁地编译代码以进行手动或自动测试。每次编译的输出就是合约的字节码。

要部署合约,只需发送一笔交易,并在交易的data字段中包含该合约的字节码,并省略to地址。EVM将处理剩下的事情。一旦交易被打包到区块中,交易收据中就会包含已部署合约的地址,以便与合约进行交互。

tx = {
    "from": your_account,
    "data": "0x60abc...",
    ...
} 

w3.eth.send_transaction(tx)

像web3.py这样的工具提供了更人性化的方式来实现这一点。编译的另一个输出是合约的ABI和一些额外的元数据。

注意:ABI代表应用程序二进制接口(Application Binary Interface)。简单来说,ABI是一个机器可读的数据块,它描述了合约如何与用户交互——哪些函数可用以及预期的数据类型。它是一些JSON数据,您可以将其传递给以太坊库(例如web3.py、ethers.js等),以便它能够提供人性化的界面。现在您明白这个名字的含义了吗?ABI传达了应用程序字节码的接口。

一旦web3.py知道了合约的ABI和字节码(或者,如果已经部署,则是合约地址),该库就可以为您提供与合约交互的更直观的界面。

# Instantiate a contract factory:
Billboard = w3.eth.contract(abi=abi, bytecode=bytecode)

# Deploy an instance of the contract:
tx_hash = Billboard.constructor("eth very wow").transact()

# Wait for the transaction to be included and get the receipt:
tx_receipt = w3.eth.wait_for_transaction_receipt(tx_hash)

# Retrieve the deployed contract instance:
billboard = w3.eth.contract(
    address=tx_receipt.contractAddress,
    abi=abi
)

# Interact with the contract instance:
billboard.functions.message().call()
# eth very wow

billboard.functions.writeBillboard("sneks everywhere").transact()

billboard.functions.message().call()
# sneks everywhere

合同期限与数字资产管理的编程基础

合同的有效期如何界定?
在数字资产管理的语境下,合同的灵活性得益于区块链的编程能力。实体资产通过代币化上链已成为现实,但这一过程涉及复杂的挑战。

数字资产标准的演进

多年来,数字资产领域逐步形成了一系列标准化协议,为复杂合约的设计奠定了基础。其中:

  • ERC-20:定义了同质化代币(Fungible Tokens)的标准,适用于可互换资产(如稳定币)。
  • ERC-721:开创了非同质化代币(NFT)的先河,每个代币具有唯一性,适用于数字艺术品或收藏品。

术语解析:

  • Fungible(同质化):代币之间无差异,可自由交换(如100个ERC-20代币无顺序之分)。
  • Non-Fungible(非同质化):每个代币具有独特属性,身份至关重要(如NFT的唯一所有权)。
标准背后的技术逻辑
  • ERC-20:通过智能合约维护一个公共地址列表,记录每个地址的代币余额(整数形式)。
  • ERC-721:在ERC-20基础上引入唯一代币ID和元数据,支持个性化属性。

标准化效应:
模块化标准的普及使得开发者能快速组合创新,例如将ERC-20与ERC-721结合,创造兼具流通性与独特性的资产。


智能合约的进阶实践:继承与交互

代码复用:通过继承简化开发

借鉴面向对象编程的继承概念,开发者可复用已验证的合约模板。例如,OpenZeppelin提供的标准合约库允许直接继承功能:

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract MyToken is ERC20 {
    constructor() ERC20("ExampleToken", "XMPL") {}
}

优势:

  • 无需重复实现基础逻辑(如转账、余额查询)。
  • 专注定制化功能开发,提升效率。
合约交互与工厂模式

智能合约不仅能调用其他合约,还可作为“工厂”动态部署新合约,或作为“代理”管理多个合约实例。这些模式为复杂应用(如去中心化交易所)提供了扩展性。


可升级性与开发工具链

可升级合约的设计模式

尽管区块链强调不可变性,但通过代理模式等设计,合约可实现功能迭代。需权衡安全性与灵活性,选择适合项目需求的方案。

开发者资源推荐
  1. 入门工具:

    • Remix:浏览器内集成开发环境,支持快速原型设计。
    • Solidity示例库:按主题分类的代码片段,辅助学习。
    • OpenZeppelin合约向导:可视化生成代币合约框架,支持一键导入Remix。
  2. 进阶学习:

    • CryptoZombies:游戏化Solidity教程,适合初学者。
    • Speedrun Ethereum:结合JavaScript前端的实战挑战。
    • Patrick Collins课程:涵盖Python/JavaScript的全面视频教程。
  3. 问题排查:

    • 以太坊Stack Exchange:社区驱动的问答平台,解决常见难题。

从Remix到专业框架:开发环境升级

Remix的局限性

Remix适合快速验证概念,但在团队协作、自动化测试和规模化开发中显得不足。此时需转向专业框架:

  • Ethereum.org推荐框架:如Hardhat、Foundry等,支持多语言和复杂工作流。
  • Ape框架(Python生态):为Python开发者量身定制的智能合约工具链。

Ape框架深度解析:Python开发者的福音

核心特性
  • 插件架构:通过插件扩展编译器、节点连接和代码分析功能。
  • Web3.py集成:基于EF Python团队维护的库,确保兼容性。
  • 多语言支持:与Hardhat等框架类似,但专注于Python生态。
为什么选择Ape?
  • 非Web场景适用:即使无需前端界面,Ape仍可高效部署和管理合约。
  • UI开发灵活性:可为Ape部署的合约构建独立UI,不受工具限制。
实战:通过WETH合约学习Ape

目标:理解WETH(Wrapped Ether)合约机制,掌握Ape的三种使用模式(控制台、测试、脚本)。

先决条件:

  • 基础Python环境(推荐虚拟环境)。
  • 对以太坊概念(如Gas、交易)有初步了解。

操作步骤:

  1. 初始化项目:
    mkdir ape-weth-demo && cd ape-weth-demo
    pip install eth-ape
    ape init
    
  2. 项目结构:
    • 生成contracts、scripts、tests目录及配置文件。
    • 保持默认目录布局,避免移动文件导致路径错误。

后续步骤:

  • 在contracts目录编写WETH合约逻辑。
  • 使用scripts部署合约,tests验证功能。

参考资源:

  • 示例代码库:[GitHub链接]
  • Ape官方文档:[Ape Framework Docs]

通过Ape框架,Python开发者能以更低的门槛参与智能合约开发,同时保持代码的可维护性和扩展性。

编译与部署WETH合约:Ape框架实战指南

1. 获取WETH9合约代码

首先从Etherscan获取经过验证的WETH9合约源码:

  • 搜索"etherscan weth",进入合约页面
  • 在"Contract"选项卡复制完整源代码
  • 在项目contracts/目录创建WETH9.sol文件并粘贴代码

版本说明:
WETH采用开尔文版本控制(从9开始递减),这种设计旨在鼓励充分测试后再确定最终版本。当前主流使用的WETH9已通过长期验证。

2. 配置Ape编译环境

首次编译问题处理:

$ ape compile
# 报错:No compilers detected for .sol

解决方案:

修改ape-config.yaml添加Solidity插件:

plugins:
  - name: solidity
    version: 0.8.30  # 推荐使用最新稳定版

安装插件并重新编译:

$ ape plugins install .
$ ape compile

100%|███████████████████████████████████████████████████████████████████████████████████| 35.7M/35.7M [00:46<00:00, 768kiB/s]
INFO:     Compiling using Solidity compiler '0.8.30+commit.73712a01'.
Input:
        contracts/WETH9.sol
SUCCESS:  'local project' compiled.

# 成功输出:Compiling using Solidity compiler '0.8.30...'

编译结果:
生成.build/目录,包含合约ABI和字节码等元数据(开发者无需手动处理这些文件)。

3. Ape控制台深度探索

启动交互式控制台:

$ ape console

核心功能演示:

① 区块链状态查询:

# 查看连接的网络
chain  # 输出: <ChainManager (id=1337)>

# 获取客户端版本
chain.provider.web3.client_version  # 输出: 'EthereumTester/0.9.1b1...'

# 查询最新区块
chain.blocks.height  # 输出: 0 (测试网初始状态)
chain.blocks.head   # 输出: 创世区块详情

② 账户管理操作:

# 查看测试账户列表
accounts.test_accounts  # 输出: [0x1e59..., 0xc89D...]

# 账户间转账
acct1 = accounts.test_accounts[0]
acct2 = accounts.test_accounts[1]
acct1.transfer(acct2, 100)  # 转账100wei

# 验证余额
acct2.balance  # 输出: 1000000000000000000000100 (初始1e21 + 100)

③ 项目合约访问:

# 获取项目合约列表
project.contracts  # 输出: <Contracts /path/to/contracts>

# 加载WETH9合约(自动触发编译)
weth = project.contracts.get(name="WETH9")
4. WETH合约核心机制解析

代币化原理:
WETH9实现了ERC-20标准的以太币包装方案,核心功能包括:

  • 存款:用户发送ETH到合约,获得等量WETH
  • 提款:销毁WETH代币,提取等值ETH
  • 零费用兑换:除Gas费外无额外成本

典型应用场景:
DeFi协议通过统一ERC-20接口简化开发,例如:

  • 在Uniswap提供WETH/DAI流动性
  • 在Aave抵押WETH借款
  • 在MakerDAO生成DAI稳定币
5. 插件生态扩展

可用插件查询:

$ ape plugins list -a
# 显示支持Hardhat/Foundry等网络插件

推荐插件组合:

  • ape-hardhat:增强调试和追踪功能
  • ape-foundry:集成Foundry测试工具链
  • ape-etherscan:直接验证已部署合约
6. 后续部署准备

在进入部署阶段前,建议:

  1. 配置网络参数(ape-config.yaml):
default_ecosystem: ethereum
networks:
  local:
    default: true
    cmd_settings:
      gas_limit: 8000000
  1. 编写部署脚本(scripts/deploy_weth.py):
from ape import accounts, project

def run():
    deployer = accounts.test_accounts[0]
    weth = deployer.deploy(project.contracts.WETH9)
    print(f"WETH deployed at: {weth.address}")

实践建议:

  • 先在本地测试网验证合约行为
  • 使用ape test运行单元测试
  • 部署到主网前通过ape-etherscan验证源码
以太坊虚拟机EVM介绍,智能合约详解 指的是“一套以数字形式指定的承诺,包括合约参与方可以在上面执行这些承诺的协议”。早在1994年,美国计算机科学家尼克·萨博(Nick Szabo)就提出了智能合约的概念。智能合约是一种基于区块链技术的自动执行合约的计算机程序。它们是一组以代码形式编写的、在区块链上运行的规则和逻辑。智能合约定义了在满足特定条件时应该执行的操作,而无需中介方的干预。以太坊是最为著名的支持智能合约的区块链平台之一。在以太坊中,智能合约是用一种称为Solidity的编程语言编写的。 阅读详情

相关推荐

以太坊智能合约之如何执行智能合约?

区块链技术在顶级技术中占据主导地位的主要原因在于其去中心化。虽然区块链的主要目的是在没有中心的情况下维护交易记录,但为了实现自动化,智能合约被引入。那么在写完智能合约之后呢?在本文的这个以太坊智能合约教程中,我们将了解如何使用Truffle Ethereum和以太坊专用网络来执行智能合约。 我们将在以太坊智能合约教程中查看以下主题: 使用案例:保险流程中的智能合约 智能合约的好处 安装先决条件 ...

mongo_node的专栏 4052

以太坊智能合约:从概念到实操指南

智能合约是一组自动执行预定义规则的代码,类似于我们生活中的自动售货机。当用户选择商品并支付后,售货机会自动释放商品,用户不必担心交易的信任问题,因为售货机按照预设的程序操作。类似地,信用卡的自动还款也是一种实现了智能合约逻辑的机制:在设定自动还款之后,到期时系统会自动扣款。智能合约的这一概念,在数字货币和区块链领域得到了更深入的应用和发展。2008年,一个化名为中本聪的人或团队发表了《比特币:一种点对点的电子现金系统》论文,这标志着比特币的诞生。

Reveone的博客 4905

深入探索基于以太坊的智能合约开发与测试:从基础到实战

智能合约(Smart Contract)是以太坊平台上运行的自主执行代码,类似于传统合同的“自动化”。在以太坊中,智能合约不仅保存状态,还能自动执行逻辑操作。通过以太坊的虚拟机(EVM),智能合约被部署在区块链网络上,所有交易都是公开和不可篡改的。基于以太坊的智能合约开发涉及多个方面,包括合约编写、编译、部署、与合约交互以及测试等。在整个开发流程中,开发者必须特别注意智能合约的安全性和性能问题,确保合约的代码无漏洞且逻辑严谨。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1499

以太坊智能合约开发-《精通以太坊智能合约开发》学习总结实践

文章目录初探以太访智能合约remix小demo以太坊核心概念交易/事务( Transaction )区块参考 初探以太访智能合约 remix小demo https://remix.ethereum.org 目前尝试 Solidity 编程的最好方式是使用 Remixo Remix 是一个基于浏览器的 Solidity IDE , 它集成了 Solidity 编译器、运行环境 ,以及调试和发布工具。 使用浏览器打开网址 https://remix.ethereum.org 官方demo // SPDX-Lic

西京刀客 4062

指南:保护以太坊智能合约的开发者

指南:保护以太坊智能合约的开发者 以太坊使用“智能合约”,或者是使用构建在区块链技术上的可编程软件程序,来支持去中心化应用程序(dApp)、NFT和DAO。以太坊智能合约提供的丰富功能允许web3开发者创建复杂的基于区块链的应用程序。 然而,智能合约的实验性增加了漏洞和错误,随着加密货币市值达到数万亿美元,黑帽黑客正在寻找智能合约中的弱点,以便加以利用。 在本文中,我们将介绍智能合约安全最佳实践、故障安全保护以及用于加强智能合约安全性的智能合约分析工具。 以太坊智能合约简介 以太坊的智能合约是用solid

chinadefi的博客 452

区块链智能合约:以太坊与Solidity语言

以太坊是一个开源的、去中心化的区块链平台,支持智能合约的创建和执行。以太坊不仅支持加密货币(以太币,ETH)的交易,还允许开发者在其上构建去中心化应用(DApps)。Solidity是一种面向合约的高级编程语言,专为编写智能合约而设计。其语法类似于JavaScript,但增加了许多针对区块链应用的特性,如合约继承、事件触发、修饰器等。以太坊智能合约的开发是一个既充满挑战又极具潜力的领域。通过掌握Solidity语言的基础知识和高级技巧,结合最佳实践和安全防范措施,开发者可以构建出安全、高效、可靠的智能合约。

shejizuopin的博客 1085

以太坊智能合约ABI详解

在以太坊生态系统中, ABI 是从区块链外部与合约进行交互以及合约与合约间进行交互的一种标准方式。本文让我们了解一下智能合约的 ABI 是什么。

StevenX5 8701

区块链技术详解:以太坊智能合约开发实战

智能合约是一种部署在区块链上的自动执行程序,它能够在预定条件满足时自动执行指定的操作。以太坊智能合约使用Solidity编程语言编写,并部署在以太坊虚拟机(EVM)上运行。本文详细介绍了以太坊智能合约的开发实战技巧,包括开发环境搭建、智能合约编写、编译、部署和测试等方面。通过代码示例和安全性分析,帮助开发者更好地掌握以太坊智能合约的开发流程和安全考虑。在实际应用中,开发者应根据具体需求和场景选择合适的工具和方法,并不断优化代码以提高性能和安全性。

shejizuopin的博客 1438

以太坊如何部署智能合约

以太坊社区开发并开源了非常好用的在线 Solidity 集成开发环境Remix,可以方便的在 Remix 中编写、部署、测试智能合约,Remix 提供了强大的自动完成,语法高亮,实时编译检查错误等。打开remix,界面如下: 在代码区输入一下合约代码: pragma solidity ^0.4.21; contract Phone { string public model; ...

zengchen73的专栏 1万+

以太坊Python智能合约开发指南

在以太坊上获得一个基本的智能合约是一个很简单的事,只需google查询“ERC20代币教程”,你会发现有关如何做到这一点的大量信息。以编程方式与合约交互完全是另一回事,如果你是一个Python程序员,那么教程就很少。所以写这个Python中的以太坊智能合约开发指南。 按我的统计对我们来说幸运的是,2017年Web3.py的第4版发布,这意味着现在比以往更容易运行python脚本并观察区块链上发生的...

mongo_node的专栏 3328

[特殊字符] 以太坊智能合约:原理、执行与核心机制

摘要: 智能合约是以太坊区块链上自动执行的程序,无需人为干预,通过交易触发运行。用户通过部署合约地址并发送交易来调用合约函数,所有节点通过EVM执行并验证结果,确保一致性和不可篡改性。智能合约的透明性、确定性及Gas费用机制使其成为去中心化的可信工具,但部署后代码不可更改,执行失败仍会消耗Gas。其核心价值在于将信任从人转移到代码,重塑商业和金融的底层逻辑。

持续分享有趣的技术干货 1541

【区块链学习笔记】以太坊、智能合约

目录一、以太坊1. 定义2. 以太坊与比特币的关系3. 以太坊的共识二、智能合约1. 智能合约的定义2. 智能合约的编译智能合约源码智能合约编译工具的安装 一、以太坊 以太坊是区块链2.0时代的代表,也是全球第一个ICO项目。 1. 定义 以太坊(Ethereum):是一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether)提供去中心化的以太虚拟机(Ethereum Virtual Machine)来处理点对点合约。 从上述的定义可以看出以太坊和比特币相似,都是一个基于区块链技术的分

Famidlistimo的博客 3550

以太坊智能合约Demo

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战demo示例快速入门,用demo例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力。智能合约其实是“执行合约条款的计算机交易协议”。区块链上的所有用户都可以看到基于区块链的智能合约。 维基上说智能合约(英语:Smart...

weixin_44172023的博客 1060

1-完全理解以太坊智能合约

每当我们调用count()函数时,此智能合约的区块链状态将增加1,这个状态是对任何人都可见的。它是在创建智能合约时执行的代码,它包含我们可以调用的函数。合约的计算越多,运行它的成本就越高。智能合约中的安全漏洞是很难修复的,因为区块链的不可篡改特性。那些在ICO中每个人都赞不绝口的代币,就是一个智能合约,我们自己也可以在以太坊上创建自己的代币。智能合约是以太坊网络上的一种特殊帐户,我们有用户帐户,还可以拥有智能合约帐户。虽然智能合约是图灵完整的,理论上可以做任何事情,但它们并不适合繁重的计算工作。

andy的博客 2131

php工程师如何开发以太坊智能合约的教程

以太坊是备受关注的区块链,它基于密码学技术和P2P通信技术 构建了一个去中心化的平台,所有的交易同步保存在每个节点中, 通过将区块单向级联成链,以太坊有效的保证了交易的不可篡改: chain 智能合约平台 以太坊是第一个实现了虚拟机的区块链,因此为智能合约 - Smart Contract - 的运行提供了良好的支持环境。也正因为这个原因,以太坊被称为区块链 2.0,以区别于比特币代表的...

rejames的博客 1772

MuJoCo柔性体仿真实战:从FlexComp建模到自定义模型导入

柔性体仿真是机器人交互研究中不可或缺的一环,MuJoCo作为高精度物理求解器,凭借高效的求解速度与批量并行能力,成为强化学习与软体抓取任务的热门选择。其FlexComp机制将连续材料离散为粒子-约束系统,以较低建模成本模拟布料、软组织等形变行为,相比Gazebo等平台更具实时性与可扩展性。技术价值体现在自定义柔性体建模与导入流程中:通过XML配置网格密度、间距与材料参数,即可生成贴合任务需求的软体垫子或硅胶抓手。在柔性抓取、颗粒抓手、医疗仿真等场景中,该方法能快速构建可训练的环境。围绕环境搭建、FlexCo

weixin_29045585的博客 159

什么是以太坊?什么是智能合约?

以太坊是一个分布式的计算平台。它会生成一个名为Ether的加密货币。程序员可以在以太坊区块链上写下“智能合约”,这些以太坊智能合约会根据代码自动执行。 以太坊是什么? 以太坊经常与比特币相提并论,但情况却有所不同。比特币是一种加密货币和分布式支付网络,允许比特币在用户之间转移。 相关:什么是比特币?它是如何工作的? 以太坊项目有更大的目标。正如Ethereum网站所说,“以...

mongo_node的专栏 1万+

华为Atlas 300I推理卡驱动安装避坑指南:不同安装方式的选择与优化

本文详细解析华为Atlas 300I推理卡驱动安装的三种主流方式(.run、.rpm和源码编译),提供关键环境检查步骤、安装流程优化建议及常见问题解决方案,帮助开发者高效完成芯片推理卡部署并规避典型安装陷阱。

q9w8e7r6t5的博客 431

以太坊智能合约

什么是智能合约? 智能合约是运行在区块链上的一段代码,代码的逻辑定义了合约的内容。 智能合约的账户保存了合约当前的运行状态 balance:当前余额 nonce:交易次数 code:合约代码 storage:存储,数据结构是一颗MPT树 Solidity是智能合约最常用的语言,语法上与JavaScript很接近 example 【payable】 以太坊规定如果合约账户要能接受外部转账,必须标注payable。 调用智能合约 如何调用智能合约 创建一个交易,接收地址为要调用的呢个智能合约的地址,dat

handsomeyinjun的博客 3339

机器人抓取(一)—— ROS MoveIt! 程序控制真实UR5机器人运动(python)

接上篇:ubuntu18.04 ros-melodic 安装 ur_robot_driver,驱动真实的 ur5 机器人 上文在 ubuntu 系统中配置了ur 机器人ros功能包 universal_robot 和驱动 Universal_Robots_ROS_Driver,并实现了用 moveit_rviz 拖动机器人运动。本文旨在学习如何使用 moveit python 用户接口moveit_commander,实现真实的ur5 机器人轨迹规划与控制。 1. ur5 机器人控制 参考:MoveIt »

zxxRobot的博客 1万+

FANUC机器人RSR与PNS功能深度解析及实战应用指南

本文深度解析了FANUC机器人RSR(远程程序启动)与PNS(程序号选择)两大核心功能。文章详细阐述了RSR的队列执行机制与PNS的二进制编码原理,提供了从硬件连接到参数配置的完整实战指南,并分享了混合使用策略与常见故障排除方法,旨在帮助工程师实现高效、稳定的生产线自动化程序调度。

neovim7hacker的博客 308

详解以太坊

以太坊原理 以太坊通过建立终极的抽象的基础层-内置有图灵完备编程语言的区块链-使得任何人都能够创建合约和去中心化应用,并在其中设立他们自由定义的所有权规则、交易方式和状态转换函数。 图灵完备:能够运行非常复杂的运算,最简单的理解是它支持循环的操作,而比特币的验证是不支持循环的。 以太坊虚拟机(EVM)是以太坊中智能合约的运行环境。它不仅被沙箱封装起来,事实上它被完全隔离,也就是说运行在EVM内部的代码不能接触到网络、文件系统或者其它进程。甚至智能合约与其它智能合约只有有限的接触。 对比比特币

JackieDYH的博客 3296

手撕Lua字节码:从黑盒到透明

lua 字节码 怎么‘手撕’一个 chunk 看看里面啥样?我手里有一个.luac或出来的二进制字节码,想知道里面到底是什么结构、哪些字段、有哪些指令,怎么一步一步“拆箱”,从一个黑盒变成有迹可循的东西?也就是:不满足于只会loadpcall而是想亲眼看看一个 chunk 内部长啥样,甚至写点工具把它解析出来。这篇就用带你从“拿到一坨.luac不搞高深玄学,尽量让你看完就能自己动手。注:以 Lua 5.3/5.4 为主,细节各版本略有不同,但大体套路是一致的。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 99
上一篇: 以太坊开发者指南(二):开启交易的钥匙
下一篇: 以太坊的P2P网络协议:世界计算机的“神经网络”
voidmort
博客等级 码龄9年 13粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值