Skip to content

10. 智能合约设计②

  • 开始时间:08:15
  • 用原生JavaScript开发,在转React,这行没有用Vue,一些边边角角会用到(后台呀、管理平台呀)
  • 视频进度:00:30:00:和上一课的内容高度融合
  • 找水龙头、使用测试链、上链操作
  • 需要懂业务,需要能明白入职的行业,有相关经验,面试会问到
  • The Graph 是一个去中心化的区块链数据索引 & 查询协议。

水龙头接收操作

  • 用小狐狸的指定链的收货地址接收就行
  • 线上网或测试网络地址都一样
  • 地址一样的原因:地址来源于你的私钥,与网络无关
    • 钱包地址并不是链生成给你的,而是由 助记词 → 私钥 → 公钥 → 地址 推导出来的。
    • 不管你连的是主网、SepoliaGoerliBSCPolygon……只要助记词一样 → 你生成的地址永远一样。

用测试链互相转账

类型是否可删除交易谁控制链数据
主网 Ethereum Mainnet❌不可删除全球节点共同维护
测试网 Sepolia / Holesky❌不可删除同样由网络节点维护
本地链 Hardhat / Ganache / Anvil✔可删除 / 重写你自己控制链状态

0x0000000000000000000000000000000000000000

名称含义
Zero Address / 空地址代表 不存在的地址
Burn Address常用于 销毁代币(不可取回)
默认地址合约中未设置就会返回这个地址

发往这个地址的币是不可取回的,相当于彻底销毁。

业务面试真题

请通过下方网址查看页面并回答问题:

  1. 每个子市场中的 "outcome(结果)" 是什么意思?
  2. "% chance(概率百分比)" 代表什么?如何得出或计算?
  3. "Yes" 和 "No" 代币的价格是如何形成的? “Bids” 与 “Asks” 有什么区别?
  4. "Yes" 与 "No" 代币的价格范围是多少?为什么要这样设定?

https://app.olab.xyz/detail?topicId=1&type=multi

佳哥笔记

Details
js
1.引入了V6  ether.js和jq(loading abi.json用的)
import InfoContractJson from "./InfoContract.json":
2.需要学习基本的ethers核心的core
    let provider;  浏览器钱包操作权 拿过来了
    let signer;  需要进行签名
    let contract; new ether.Contract(合约地址InfoContractJson.network 5777 ,InfoContractJson,签名) 合约交互 contract.具体方法
    let userAddress; 用户信息地址
3.接管钱包
    provider = new ethers.BrowserProvider(window.ethereum);
    signer = await provider.getSigner(); 获取账户地址 获取余额
4.不是测试网 主动帮你切过去
ethereum.request({
    method: 'wallet_switchEthereumChain',
    params: [{ chainId: targetChainId }],
});
如果用户的小狐狸 没有配置这个网络
await window.ethereum.request({
    method: 'wallet_addEthereumChain',
    params: [networkConfig],
});
'0x539': {
    chainId: '0x539',
    chainName: 'Local Testnet (Ganache)',
    nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
    rpcUrls: ['http://127.0.0.1:7545'],
    blockExplorerUrls: [],
},
5.合约的信息都在abi里

部署了合约、链rpc正常启动的、钱包连上去 找到合约 合约地址
6.前端怎么和合约交互呢  
contract = new ethers.Contract(contractAddress, contractABI, signer);
contract.合约方法
7.写合约       
const tx = await contract.setInfo(name, age);
//等待数据上链 读取是不需要上链
const receipt = await tx.wait(具体4个块);
8.监听合约的事件呢
 contract.on('Instructor', (name, age, event) => {})