web3.0 DApp系统智能合约开发部署技术方案

2022-11-09 13:36:00 浏览数 (1)

现阶段,Web3.0处于早期发展阶段。由于web3.0具有“智能机器广泛参与到网络过程”的鲜明特征,所以Web3.0的发展将离不开云计算、大数据、人工智能、物联网、区块链等相关技术。而区块链技术是Web3.0最关键的技术。

Web3.0最主要的特征就是“去中心化”,Web3.0利用区块链的协议创造与自动执行的技术,即通过智能合约,分配协议可以不通过第三方,即得到高效、准确、可信的执行,并且全过程可审计。

web3-react

web3-react 是流行的库 Web3 的一个很好的 React 实现

代码语言:javascript复制
//默认使用Metamask的web3提供者
const providerOptions = {
  // Example with injected providers
  injected: {
    display: {
      logo: "data:image/gif;base64,INSERT_BASE64_STRING",
      name: "Injected",
      description: "Connect with the provider in your Browser"
    },
    package: null
  },
  // Example with WalletConnect provider
  walletconnect: {
    display: {
      logo: "data:image/gif;base64,INSERT_BASE64_STRING",
      name: "Mobile",
      description: "Scan qrcode with your mobile wallet"
    },
    package: WalletConnectProvider,
    options: {
      infuraId: "INFURA_ID" // required
    }
  }
};
  • src/hooks/useWallte.js 这里暴露出来的web3、userAddress、chainId、networkId、resetApp、assets、getAccountAssets 等, 可以参考ConnectWallteExample.vue这个demo 。
  • 一旦你有了合约的地址和 ABI,你可以像这样来实例化 Web3.js,就可以愉快的调用我们合约的函数: call and send
代码语言:javascript复制
<script setup>
const {
  onConnect,
  connected,
  web3,
  userAddress,
  chainId,
  networkId,
  resetApp,
  assets,
  getAccountAssets,
} = useWallet();

const handleWalletConnect = async () => {
  await onConnect();
  if (connected) {
    console.log('afterConnectdWallet', connected);
  }
};
const contract = computed(
  () => new web3.value.eth.Contract(USDT_API, USDT_ADDRESS),
);
function approve() {
  return contract.value.methods
    .approve(USDT_ADDRESS, utils.toHex(utils.toWei('1000000000000000000000000000', 'gwei')))
    .send({ from: userAddress.value });
}

// .....
</script>

0 人点赞