dpac是一种evm工件包格式
项目描述
dpac-py ☀️
是dpac evm打包格式的Python端口。
dpac允许您共享整个部署,包括与evm合约交互所需的所有适当的地址和工件。
该库提供了一个低级实现,以及ape的绑定。
安装
pip install dpack-py
由于dpac使用ipfs指针,您需要运行一个ipfs守护进程。有关如何安装它的说明,请参阅ipfs文档。
如果您使用远程ipfs节点,可以设置一个IPFS_RPC_URL
环境变量。
开发
要设置用于开发的有用的额外库
uv venv
make dev
加载dpac
使用dpac.load
从本地文件加载dpac。当您访问相应的合约类型和对象时,它将懒加载所需的工件。
both types
和 objects
展示一个 contract_type
属性,由 ethpm-types
解码为 python模型。它允许像下面显示的简单abi查找。
import dpack
pack = dpack.load("examples/uniswap-v3.dpack.json")
pack.types['UniswapV3Factory'].contract_type.selector_identifiers
objects
还展示一个 contract_instance
属性(与ape中的不同),允许查找合约 typename
和 address
。
pack.objects['factory'].address
# or use a shorthand attribute access
pack.factory.address
创建dpac
要创建dpac,请使用 pack_type
和 pack_object
方法。打包类型是可选的,因为您可以直接打包命名对象,库将自动处理唯一合约类型的打包。
import dpack
pack = (
dpack.Dpack(network="sepolia")
.pack_object(
path="tests/weth-ropsten-artifact.json",
typename="WETH9",
objectname="weth",
address="0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14",
)
)
要保存dpac到json文件,只需调用save
并指定文件路径。
pack.save('weth.sepolia.dpack.json')
您可以打包尽可能多的对象和类型,但请注意,当前版本(dpack-1
)的格式在顶级指定了网络,因此您还不能创建多链dpac。
在ape中使用dpac
这个库还提供了一个简单的包装器,可以将对象作为ape合约实例加载,因此您可以立即与之交互。
types
作为感知提供者的包装器暴露为ContractContainer。 objects
是可直接使用的ContractInstance。
可以使用类似pack["MyType"]
的下标简写来访问types
。您可以使用.at(address)
将地址转换为类型,它返回一个ContractInstance
。
也可以使用属性简写pack.my_contract
来访问objects
。
$ ape console --netwowrk ethereum:mainnet
import dpack.ape
pack = dpack.ape.load('examples/uniswap-v3.dpack.json')
# <ApeDpack types=['UniswapV3Factory', 'UniswapInterfaceMulticall', 'Multicall2', 'ProxyAdmin', 'TickLens', 'NFTDescriptor', 'NonfungibleTokenPositionDescriptor', 'NonfungiblePositionManager', 'V3Migrator', 'QuoterV2', 'SwapRouter02', 'Permit2', 'UniversalRouter', 'UniswapV3Staker', 'Uni', 'UniswapV3Pool'] objects=['factory', 'multicall', 'multicall2', 'proxy_admin', 'tick_lens', 'nft_descriptor', 'nonfungible_token_position_descriptor', 'transparent_upgradeable_proxy', 'nonfungible_position_manager', 'v3_migrator', 'quoter', 'swap_router', 'permit_2', 'universal_router', 'staker', 'uni', 'pool']>
# attribute access is shorthand for objects
pack.factory
# <UniswapV3Factory 0x1F98431c8aD98523631AE4a59f267346ea31F984>
# subscript access is shorthand for types
pack['UniswapV3Pool']
# <UniswapV3Pool>
# you can apply types with .at(address)
[pack['UniswapV3Pool'].at(log['pool']) for log in pack.factory.PoolCreated[:3]]
# [<UniswapV3Pool 0x1d42064Fc4Beb5F8aAF85F4617AE8b3b5B8Bd801>, <UniswapV3Pool 0x6c6Bc977E13Df9b0de53b251522280BB72383700>, <UniswapV3Pool 0x7BeA39867e4169DBe237d55C8242a8f2fcDcc387>]
使用ape创建dpack
ape还使创建dpack变得更加容易,因为它可以利用其功能从探索器中检索所需的abis。
查看此示例了解如何操作。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分布
dpack_py-0.2.2.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 16a4cfcccf9fa1736a44daaee841e4c178ebc3f190ac3fd4ef20e62ebb32da3d |
|
MD5 | ac60cd9a010c9abef233401e0de96d43 |
|
BLAKE2b-256 | 0e2b6dfbbeac488318108609610b58a83bbcaa5ce7369d8d0060fe1c772d4731 |
dpack_py-0.2.2-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 3ffec23c0e19e762b3f472d083417c0cc8d63ef4680a928e8dceffbaf051ebe7 |
|
MD5 | 67f4d224fd91a7d70d2726ae47a58349 |
|
BLAKE2b-256 | 05a99303f97d0c0490843b0c7b36d77ca822031fe0d0b56fa438d61f05168b80 |