Web3.0技术与核心特征:Web3.0是元宇宙的底座,技术包括区块链、人工智能、大数据等技术和用户共识社区(DAO)等,核心特征为用户隐私保护能力加强、去中心化组织形态、价值互联互通、“平行空间”成为现实
元宇宙是上层建筑,Web3.0是基础设施:Web3.0和元宇宙均代表互联网的未来,Web3.0代表的是技术发展方向,而元宇宙代表了未来应用场景和生活方式,两者相辅相成,呈现一体两面的关系。
What is DApp
"DApp"stands for decentralized applications.Like traditional applications,decentralized applications also have front-end(client)and back-end(server).The user interface of DApp can be written in any language(like traditional applications),and its back end can be called.So,how is Dapps different from traditional applications?The back-end code of DApp runs on a distributed peer-to-peer network(i.e.blockchain).
使用web3py部署智能合约并调用
前提:启动本地geth节点,开启相关rpc服务,默认端口为8545,本人是在虚拟机中配置了geth节点
使用solc或者solcjs编译智能合约生成abi和bin,solc指令为控制台输出,solcjs会保存成文件。
solc--bin Voting.sol
solc--abi Voting.sol
安装包web3py
pip install web3py
import json
from web3 import Web3
web3=Web3(Web3.HTTPProvider('http://ip:8545'))
print(web3.isConnected())
account=web3.eth.accounts[0]
#读取文件中的abi和bin,也可以当场生成
with open('dataVoting_sol_Voting.abi','r')as f:
abi=json.load(f)
with open('dataVoting_sol_Voting.bin','r')as f:
code=f.read()
newContract=web3.eth.contract(bytecode=code,abi=abi)
#发起交易部署合约,
option={'from':account,'gas':1000000}
web3.geth.personal.unlock_account(account,'123')
tx_hash=newContract.constructor([b'dog',b'cat',b'bird']).transact(option)
#等待挖矿使得交易成功
tx_receipt=web3.eth.waitForTransactionReceipt(tx_hash)
print(tx_receipt.contractAddress)
合约部署成功后就可以调用了,如果需要改变数据需要使用transac()发起交易,并等待挖矿确认,只是读取则使用cal()即可
#调用合约,合约地址就是刚刚控制台打印的
address=web3.toChecksumAddress("0x6999C68d214E1d193534601759b7F1eC534597Bf")
c=web3.eth.contract(address,abi=abi)
print(c.functions.totalVotesFor(b'dog').call())