分布式存储是Web3.0的数据存储层:分布式存储为Web3.0提供底层技术支持。在Web3.0的应用中,用户交互、身份认证等都需要去中心化的方式进行存储。分布式存储的特性在于高拓展、易运维、效率高,更符合Web3.0的减少中心化巨头的垄断、将个人价值发挥到最大程度的理念。其中,IPFS是实现分布式存储的技术路径之一,具有去中心化、用户共建、价值激励等特性。
从优势上面来说:
1、存储成本低:去中心化存储是把数据分布到多个网络节点,类似分布式账本技术;
2、安全性较高:去中心化存储数据被切割成若干小块,且加密后分散在众多节点,可以避免集中式数据泄露的风险。
3、存储费用较低:在检索量较少的情况下,去中心化存储中的冷数据存储费用比中心化存储要低很多。
Web3.py部署智能合约
部署的流程比较简单,直接给出代码:
from base import*
#构建智能合约对象
storage=w3.eth.contract(abi=abi,bytecode=bytecode)
#当前区块链中最后一个交易的nonce
nonce=w3.eth.get_transaction_count(my_address)
#部署智能合约-创建交易
transaction=storage.constructor().buildTransaction(
{"chainId":chain_id,"from":my_address,"nonce":nonce}
)
#签名当前交易-证明是你发起的交易
signed_txn=w3.eth.account.sign_transaction(transaction,private_key=private_key)
print("Deploying Contract!")
#开始部署-发送交易
tx_hash=w3.eth.send_raw_transaction(signed_txn.rawTransaction)
print('Waiting for deploy transaction to finish...')
#等待智能合约部署结果,部署完后,会获得合约的地址
tx_receipt=w3.eth.wait_for_transaction_receipt(tx_hash)
print('Deployed Done!')
print(f'contract address:{tx_receipt.contractAddress}')
上述代码中,一开始通过w3.eth.contract方法实例化合约对象,需要传入abi与bytecode(base.py提供了)。