https://www.python.org/static/community_logos/python-logo-master-v3-TM.png

区块链基础概念

区块链核心特性

python

复制

下载

class Block:def __init__(self, index, timestamp, data, previous_hash):self.index = indexself.timestamp = timestampself.data = dataself.previous_hash = previous_hashself.hash = self.calculate_hash()def calculate_hash(self):import hashlibsha = hashlib.sha256()sha.update(f"{self.index}{self.timestamp}{self.data}{self.previous_hash}".encode('utf-8'))return sha.hexdigest()# 创建创世区块
genesis_block = Block(0, "2023-01-01", "Genesis Block", "0")
print(f"创世区块哈希: {genesis_block.hash}")

https://www.researchgate.net/publication/336707000/figure/fig1/AS:817393838129153@1572173939816/The-structure-of-a-blockchain-The-blockchain-is-a-linked-list-containing-blocks-of-data.png

Web3.py 入门

连接以太坊网络

python

复制

下载

from web3 import Web3# 连接Infura节点
infura_url = "https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID"
w3 = Web3(Web3.HTTPProvider(infura_url))# 检查连接
print(f"是否已连接: {w3.isConnected()}")
print(f"最新区块号: {w3.eth.block_number}")# 获取账户余额
address = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"  # 示例地址
balance = w3.eth.get_balance(address)
print(f"余额: {w3.fromWei(balance, 'ether')} ETH")

智能合约交互

python

复制

下载

# 合约ABI示例
contract_abi = '''
[{"inputs": [],"name": "get","outputs": [{"name": "","type": "uint256"}],"stateMutability": "view","type": "function"},{"inputs": [{"name": "x","type": "uint256"}],"name": "set","outputs": [],"stateMutability": "nonpayable","type": "function"}
]
'''# 合约地址
contract_address = "0x1234567890123456789012345678901234567890"# 创建合约实例
contract = w3.eth.contract(address=contract_address, abi=contract_abi)# 调用只读函数
current_value = contract.functions.get().call()
print(f"当前值: {current_value}")# 发送交易(需要账户和私钥)
'''
account = "0xYourAccountAddress"
private_key = "YourPrivateKey"
nonce = w3.eth.get_transaction_count(account)
tx = contract.functions.set(42).buildTransaction({'chainId': 1,'gas': 200000,'gasPrice': w3.toWei('50', 'gwei'),'nonce': nonce
})
signed_tx = w3.eth.account.sign_transaction(tx, private_key)
tx_hash = w3.eth.send_raw_transaction(signed_tx.rawTransaction)
print(f"交易哈希: {tx_hash.hex()}")
'''

智能合约开发

Solidity基础合约

solidity

复制

下载

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract SimpleStorage {uint256 private value;event ValueChanged(uint256 newValue);function get() public view returns (uint256) {return value;}function set(uint256 newValue) public {value = newValue;emit ValueChanged(newValue);}
}

使用Brownie部署合约

python

复制

下载

from brownie import accounts, SimpleStoragedef deploy_simple_storage():# 加载账户account = accounts[0]# 部署合约simple_storage = SimpleStorage.deploy({"from": account})# 初始值initial_value = simple_storage.get()print(f"初始值: {initial_value}")# 更新值transaction = simple_storage.set(42, {"from": account})transaction.wait(1)  # 等待1个区块确认# 新值updated_value = simple_storage.get()print(f"更新后的值: {updated_value}")return simple_storagedef main():deploy_simple_storage()

https://ethereum.org/static/8ea7775026b7fac7b16188a50a60f70d/302a4/developers.png

NFT开发实战

ERC721合约示例

solidity

复制

下载

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";contract MyNFT is ERC721 {using Counters for Counters.Counter;Counters.Counter private _tokenIds;constructor() ERC721("MyNFT", "MNFT") {}function mintNFT(address recipient, string memory tokenURI)publicreturns (uint256){_tokenIds.increment();uint256 newItemId = _tokenIds.current();_mint(recipient, newItemId);_setTokenURI(newItemId, tokenURI);return newItemId;}
}

使用Python铸造NFT

python

复制

下载

from brownie import accounts, network, config, MyNFT
from scripts.helpful_scripts import get_account
from pathlib import Path
import requests
import jsondef deploy_and_mint():account = get_account()my_nft = MyNFT.deploy({"from": account})# 上传元数据到IPFStoken_uri = upload_to_ipfs("nft_metadata.json")# 铸造NFTtx = my_nft.mintNFT(account, token_uri, {"from": account})tx.wait(1)print(f"NFT铸造成功!查看地址: {my_nft.address}")def upload_to_ipfs(filepath):with Path(filepath).open("rb") as fp:file_binary = fp.read()ipfs_url = "http://127.0.0.1:5001"endpoint = "/api/v0/add"response = requests.post(ipfs_url + endpoint, files={"file": file_binary})ipfs_hash = response.json()["Hash"]return f"ipfs://{ipfs_hash}"def main():deploy_and_mint()

https://miro.medium.com/max/1400/1*8NgGYtqkYOwesVQdI3VQYw.png

DeFi应用开发

代币合约(ERC20)

solidity

复制

下载

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";contract MyToken is ERC20 {constructor(uint256 initialSupply) ERC20("MyToken", "MTK") {_mint(msg.sender, initialSupply);}
}

查询代币余额

python

复制

下载

from web3 import Web3# 连接节点
w3 = Web3(Web3.HTTPProvider("https://mainnet.infura.io/v3/YOUR_PROJECT_ID"))# ERC20 ABI片段
erc20_abi = '''
[{"constant": true,"inputs": [{"name": "_owner", "type": "address"}],"name": "balanceOf","outputs": [{"name": "balance", "type": "uint256"}],"type": "function"}
]
'''# 代币合约地址
token_address = "0x6B175474E89094C44Da98b954EedeAC495271d0F"  # DAI合约
user_address = "0xYourWalletAddress"# 创建合约实例
contract = w3.eth.contract(address=token_address, abi=erc20_abi)# 查询余额
balance = contract.functions.balanceOf(user_address).call()
print(f"代币余额: {balance / 10**18}")  # 假设代币有18位小数

区块链数据分析

分析交易数据

python

复制

下载

import pandas as pd
from web3 import Web3w3 = Web3(Web3.HTTPProvider("https://mainnet.infura.io/v3/YOUR_PROJECT_ID"))def get_block_data(block_number):block = w3.eth.get_block(block_number, full_transactions=True)return {"block_number": block.number,"timestamp": block.timestamp,"miner": block.miner,"gas_used": block.gasUsed,"gas_limit": block.gasLimit,"transaction_count": len(block.transactions)}# 获取最近10个区块数据
blocks_data = [get_block_data(w3.eth.block_number - i) for i in range(10)]
df = pd.DataFrame(blocks_data)# 数据分析
print(df.describe())
print("\nGas使用率:")
df['gas_usage'] = df['gas_used'] / df['gas_limit']
print(df[['block_number', 'gas_usage']])

可视化交易趋势

python

复制

下载

import matplotlib.pyplot as plt# 准备数据
df['datetime'] = pd.to_datetime(df['timestamp'], unit='s')# 创建图表
plt.figure(figsize=(12, 6))
plt.plot(df['datetime'], df['gas_usage'], marker='o')
plt.title('区块Gas使用率趋势')
plt.xlabel('时间')
plt.ylabel('Gas使用率')
plt.grid(True)
plt.savefig('gas_usage_trend.png')
plt.show()

https://www.researchgate.net/publication/338442131/figure/fig1/AS:842381179748352@1577724938245/Blockchain-data-analysis-process.png

安全最佳实践

智能合约安全检测

python

复制

下载

from slither import Slither
from slither.detectors import all_detectorsdef analyze_contract(contract_path):# 加载合约slither = Slither(contract_path)# 运行所有检测器detectors = [getattr(all_detectors, d) for d in all_detectors.__all__]print(f"分析合约: {contract_path}")print("=" * 50)for detector in detectors:detector = detector(slither)detector_results = detector.detect()if detector_results:print(f"\n{detector.ARGUMENT}:")for result in detector_results:print(f"- {result['description']}")print(f"  位置: {result['source_mapping']}")# 分析合约
analyze_contract("SimpleStorage.sol")

常见漏洞防护

  1. 重入攻击防护:

solidity

复制

下载

// 使用OpenZeppelin的ReentrancyGuard
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";contract SecureContract is ReentrancyGuard {function safeWithdraw() public nonReentrant {// 提款逻辑}
}
  1. 整数溢出防护:

solidity

复制

下载

// 使用SafeMath(0.8.0+版本已内置)
import "@openzeppelin/contracts/utils/math/SafeMath.sol";contract SafeMathExample {using SafeMath for uint256;function safeAdd(uint256 a, uint256 b) public pure returns (uint256) {return a.add(b);}
}

Web3开发工具链

工具名称用途适用场景
Web3.py以太坊交互库后端服务、脚本
Brownie开发框架合约测试、部署
Hardhat开发环境专业合约开发
Ganache本地测试链开发测试
Infura/Alchemy节点服务生产环境连接
OpenZeppelin合约库安全合约开发
IPFS去中心化存储NFT元数据存储

去中心化应用(DApp)架构

text

复制

下载

dapp_project/
├── client/              # 前端代码
│   ├── public/          # 静态文件
│   └── src/             # React/Vue代码
├── contracts/           # 智能合约
│   ├── contracts/       # Solidity代码
│   ├── tests/           # 合约测试
│   └── scripts/         # 部署脚本
├── backend/             # 后端服务(可选)
│   ├── api/             # API路由
│   └── services/        # 业务逻辑
└── docs/                # 项目文档

前端集成示例

javascript

复制

下载

import { ethers } from "ethers";
import ABI from "./contractABI.json";async function connectWallet() {if (window.ethereum) {try {// 请求账户访问const accounts = await window.ethereum.request({ method: "eth_requestAccounts" });const provider = new ethers.providers.Web3Provider(window.ethereum);const signer = provider.getSigner();// 合约实例const contractAddress = "0x123...";const contract = new ethers.Contract(contractAddress, ABI, signer);// 调用合约const value = await contract.get();console.log("当前值:", value.toString());} catch (error) {console.error("用户拒绝访问:", error);}} else {alert("请安装MetaMask!");}
}

结语与学习路径

https://ethereum.org/static/4d030a6f9c1e4a919e775cf12a8dd192/302a4/learn.png

通过这八篇系列教程,你已经掌握了:

  1. 区块链基础原理与Python实现

  2. Web3.py与以太坊交互

  3. 智能合约开发与部署

  4. NFT与DeFi应用开发

  5. 区块链数据分析

  6. 安全最佳实践

  7. 完整DApp架构

下一步学习建议

  1. 深入协议层

    • 学习以太坊EVM原理

    • 研究零知识证明(ZKP)技术

    • 探索Layer2解决方案

  2. 参与生态

    • 贡献开源Web3项目

    • 参加黑客松活动

    • 加入DAO组织

  3. 专业领域

    • DeFi协议开发

    • NFT平台架构

    • 区块链安全审计

  4. 扩展知识

    • IPFS与去中心化存储

    • Oracles与链外数据

    • 跨链技术

区块链技术正在重塑互联网未来,Python作为Web3开发的重要工具,将持续发挥关键作用。保持学习,你将成为这一变革的引领者!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/84837.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/84837.shtml
英文地址,请注明出处:http://en.pswp.cn/web/84837.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业智能体调参闭环:从物料感知到智慧工艺的落地路径

用户定义目标:智能工艺的起点不是机器,而是人 在智能制造系统中,工艺调优的第一步并非直接依赖AI或自动化设备,而是始于用户的明确输入。用户需要在系统中定义产品的工艺要求,包括目标尺寸与规格(如长宽高…

【Linux学习笔记】进程间通信之共享内存

【Linux学习笔记】进程间通信之共享内存 🔥个人主页:大白的编程日记 🔥专栏:Linux学习笔记 文章目录 【Linux学习笔记】进程间通信之共享内存前言一. system V共享内存1.1 共享内存数据结构1.2 共享内存函数1.3 共享内存实现通信…

郭碧婷闯入女团赛道 与刘忻张予曦蔡诗芸组成ROLLING SISTERS

近日,郭碧婷与刘忻、张予曦、蔡诗芸组成的女团ROLLING SISTERS正式官宣,并发布《Rolling Life》《Alpha》两首单曲! 此次几位姐姐的组合让大家眼前一亮,尤其是郭碧婷造型颠覆以往。银灰色挑染短发搭配棱角分明的黑色烟熏妆&#x…

2025再升级:医疗数智立体化体系V2.0架构简介

在医疗数智立体化体系第一版基础上,融入量子物理的第一性原理计算、人工智能(AI)、高性能云计算(HPC)和标准化机器人自动化整合成“医疗数智立体化体系2.0”,代表了医疗研发未来的重要发展方向。这个体系的核心在于深度融合物理世界规律、智能计算与自动化执行,为医疗AI…

Day40 训练和测试的规范写法

目录 一、彩色和灰度图片测试和训练的规范写法:封装在函数中 单通道图片的规范写法 彩色图片的规范写法 二、展平操作:除第一个维度batchsize外全部展平 图像任务中的张量形状 NLP任务中的张量形状 1. Flatten操作 2. view/reshape操作 总结 三…

Linux 文件 I/O 与标准 I/O 缓冲机制详解

一、什么是标准 I/O?(FILE* 接口) 标准 I/O 是 C 标准库为我们提供的一套高级文件操作接口,核心基于结构体 FILE,常见函数如: fopen() / fclose() fread() / fwrite() fprintf() / fscanf() fflush() /…

C++的前世今生-C++11

C98(ISO/IEC 14882:1998) C98 是 C 的第一个标准化版本(ISO/IEC 14882:1998),它正式确立了 C 的核心语言特性和标准库。以下是 C98 的主要特性总结: 一、核心语言特性** 模板(Templates&…

词编码模型怎么进行训练的,输出输入是什么,标签是什么

词编码模型怎么进行训练的,输出输入是什么,标签是什么 词编码模型的训练本质是通过数据驱动的方式,将离散的文本符号映射为连续的语义向量。 一、训练机制:从符号到向量的映射逻辑 1. 核心目标 将单词/子词(Token)映射为低维向量,使语义相关的词在向量空间中距离更近…

【Linux指南】文件管理高级操作(复制、移动、查找)

引言 在Linux系统管理中,文件的复制、移动与查找是比基础操作更进阶的核心技能,它们构成了高效管理文件系统的"三驾马车"。当我们需要备份重要数据、重构目录结构或在庞大的文件系统中定位目标文件时,cp、mv、find等命令将成为最得…

【栈】-----【小C的记事本】

小C的记事本 题目描述 小C最近学会了 Java 小程序的开发,他很开心,于是想做一个简单的记事本程序练练手。 他希望他的记事本包含以下功能: append(str):向记事本插入字符串 str(英文字符)。delete(k)&am…

技能系统详解(2)——特效表现

特效会有个EffectManager用于统一管理所有特效,技能特效只是各类特效中的一种 EffectManager需要提供特效的创建,返回被封装为EffectHandle 每类特效都有各种不同的配置参数,这些配置参数会传递给EffectManager用于生成EffectHandler 为支…

12.OpenCV—基础入门

01读取图像 02创建空白图像 03保存图像 04更改图像亮度 05更改图像对比度 06灰度直方图均衡 07彩色直方图均衡 08五种滤波方式 09形态学操作 10仿射变换 11角度缩放仿射变换 12透视变换 13坐标映射 14模板匹配 15多模板匹配 16查找轮廓线 17轮廓线匹配 17绘制…

【Python】Python之什么是生成器?什么是迭代器?

目录 专栏导读前言什么是迭代器(Iterator)?迭代器的定义迭代器协议可迭代对象 vs 迭代器自定义迭代器迭代器的优势 什么是生成器(Generator)?生成器的定义生成器函数生成器表达式复杂的生成器示例生成器的状…

Python中实现简单爬虫并处理数据

在当今数据驱动的时代,能够从互联网上高效地抓取信息变得越来越重要。Python因其简洁易学的特性,成为了编写网络爬虫的首选语言之一。接下来,我将介绍如何使用Python来实现一个基础的网络爬虫,并对收集到的数据进行初步处理。 首先…

免费wordpress主题网

免费WordPress主题网 WP模板牛 WP模板牛是一个提供免费WordPress主题的网站,用户可以在这里找到大量高质量的模板,适用于各种网站类型。该网站致力于为用户提供简单、高效的建站体验。 官网链接: https://wpniu.com 建站哥模板 建站哥模板…

为什么需要MyBatis-Plus条件构造器?

目录 前言 一、传统SQL编写的痛点 二、条件构造器的核心优势 1. 防SQL注入(安全性) 2. 面向对象编程(可读性) 3. 动态条件构建(灵活性) 4. 数据库无关性(可移植性) 三、典型应…

【从零学习JVM|第九篇】常见的垃圾回收算法和垃圾回收器

前言: 我们知道在堆内存中,会有自动的垃圾回收功能,那今天这篇文章将会向你介绍,这个功能实现的方式,还有实现的对象,接下来就由我来给你们详细介绍垃圾回收的算法和实现算法的回收器。 目录 前言&#…

品牌窜货治理解决方案

在渠道网络的暗潮中,窜货犹如隐秘的漩涡,某知名白酒品牌曾因区域窜货导致终端价格体系崩溃,半年内损失超3亿元。窜货行为不仅破坏市场秩序,更会引发信任危机。随着电商平台的多元化与分销层级的复杂化,品牌方亟需构建一…

车载电子电器架构 --- 法律和标准对电子电气架构的影响

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

一种通用跨平台实现SEH的解决方案

一. 前言 众所周知,在软件的代码中,处理软件本身的逻辑只要大约1/3的代码,另外2/3的代码实际上是在处理各种各样的异常情况。 这些异常情况一方面是因为不同用户之间不同的硬件软件环境要处理。另一方面是程序中可能出现的bug。比较典型的情…