首页 > 其他分享 >如何写一个简单的DAPP

如何写一个简单的DAPP

时间:2025-01-13 13:29:25浏览次数:3  
标签:function const name 如何 uint256 DAPP 简单 web3 type

这里直接上代码:

首先,在写代码之前,我们需要先下载web3.js库:

npm install web3

之后进行wbe3.js的引用:

<script src="/node_modules/web3/dist/web3.min.js">//这里换成你自己的路径</script>

这里是前端代码:

<h1>Simple DApp</h1>
<label for="dataInput">Enter a number:</label>
<input type="number" id="dataInput" placeholder="Enter a number">
<button onclick="setNumber()">Set Number</button>
<button onclick="getNumber()">Get Number</button>
<p>Stored Number: <span id="storedNumber">0</span></p>
    // 替换为你的合约 ABI 和地址
    const abi = [
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "initialValue",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "inputs": [],
            "name": "get",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "x",
                    "type": "uint256"
                }
            ],
            "name": "set",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "storedData",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ];
    const contractAddress = '0x63dD7E97c2ba8cF2038A65B0fCF477B67b065CF8'; // 替换为你的合约地址
    const web3 = new Web3(window.ethereum);
    // 创建 Web3 实例
   
    if (typeof window.ethereum !== 'undefined') {
        // 请求用户授权连接
       
        window.ethereum.request({ method: 'eth_requestAccounts' });
    } else {
        console.error('MetaMask not installed');
    }

    // 创建合约实例
    const contract = new web3.eth.Contract(abi, contractAddress);

    async function setNumber() {
        const number = document.getElementById('dataInput').value;
        const accounts = await web3.eth.requestAccounts();
        contract.methods.set(number).send({ from: accounts[0] }, (error, transactionHash) => {
            if (!error) {
                console.log('Transaction hash:', transactionHash);
            } else {
                console.error(error);
            }
        });
    }

    async function getNumber() {
        const result = await contract.methods.get().call();
        document.getElementById('storedNumber').innerText = result;
    }

这里是合约代码:

contract SimpleStorage {
    uint256 public storedData;

    // 构造函数,初始化存储数据
    constructor(uint256 initialValue) {
        storedData = initialValue;
    }

    // 设置存储数据
    function set(uint256 x) public {
        storedData = x;
    }

    // 获取存储数据
    function get() public view returns (uint256) {
        return storedData;
    }

这些就是所有的代码。

如果有什么问题可以在评论区提出。

标签:function,const,name,如何,uint256,DAPP,简单,web3,type
From: https://blog.csdn.net/2401_83221104/article/details/145093938

相关文章

  • 【AI论文】在大语言模型中迈向系统2推理:学习如何运用元思维链进行思考
    这篇论文探讨了大型语言模型(LLMs)在处理复杂推理任务时的局限性,并提出了一种名为元思维链(Meta-CoT)的新框架来解决这些缺点(大概就是授大模型以鱼不如授大模型以渔的意思)。Meta-CoT通过明确地模拟到达特定思维链所需的潜在推理过程,扩展了传统的思维链(CoT)方法。HuggingFace链接:Pap......
  • nginx 简单实践:静态资源部署、URL 重写【nginx 实践系列之一】
    〇、前言本文为nginx简单实践系列文章之一,主要简单实践了两个内容:静态资源部署、重写,仅供参考。关于Nginx基础,以及安装和配置详解,可以参考博主过往文章:https://www.cnblogs.com/hnzhengfy/p/Nginx.html 一、静态资源部署当前项目的结构基本上都是前后端分离,前端的相关资......
  • Python异步编程在股票交易系统中的应用:如何减少延迟提升效率
    炒股自动化:申请官方API接口,散户也可以python炒股自动化(0),申请券商API接口python炒股自动化(1),量化交易接口区别Python炒股自动化(2):获取股票实时数据和历史数据Python炒股自动化(3):分析取回的实时数据和历史数据Python炒股自动化(4):通过接口向交易所发送订单Python炒股自动化(5):......
  • 一个企业如何搭建品牌架构?
    品牌框架搭建,即品牌架构规划,是一个涉及品牌组合的组织结构明确、品牌角色界定以及品牌间关系梳理的过程。以下是对品牌框架搭建的详细分析:一、品牌架构概述品牌架构是品牌组合的管理方式,它决定了不同品牌如何相互关联,以及它们在市场上的定位。一个清晰、有效的品牌架构有助于......
  • 数字化工具如何助力外贸企业赢得客户
    在瞬息万变的国际贸易环境中,服务创新成为外贸企业提升竞争力的重要抓手。通过优化客户体验和服务模式,不仅可以赢得客户的信任,还能建立持久的合作关系。服务创新的必要性1.提升服务在外贸中的战略地位与价格竞争相比,优质的服务更能赢得客户的青睐。特别是在同质化竞争日趋严重......
  • 板栗看板:让供应商全生命周期管理变得如此简单
    供应商全生命周期管理(SupplierLifecycleManagement,SLM)是一个结构化、全流程的供应商闭环管理过程,旨在优化供应商关系,提高供应链的整体效率和可持续性。以下是对供应商全生命周期管理的详细阐述:一、定义供应商全生命周期管理是指企业对供应商在整个合作周期内的全面管理和维护,......
  • 鸿蒙 NEXT 开发中,普通对象跨线程如何传递
    大家好,我是V哥,在鸿蒙HarmonyOSNEXT开发中,跨线程对象传递可以通过拷贝形式实现,确保两个线程的对象内容一致,但各自指向线程的隔离内存区间。以下是使用SharedArrayBuffer实现跨线程共享内存的完整案例代码,包括详细解释,整理的学习笔记,分享给大家。关注威哥不迷路,学习鸿蒙就很酷。......
  • 坚果云:传输文件超快!共享文件,超简单!
    1.传输文件,快到飞起!传输文件是工作中最常见但也最让人头疼的事。微信传个大文件,要么卡顿要么传不了,真的太烦人了。但坚果云就不一样了,它传输文件的速度简直快到飞起!不管是多大的文件,还是整个文件夹,坚果云都能轻松搞定,而且完全不需要压缩。你只需要生成一个分享链接,对方点击一......
  • 如何更好的对React Hooks的理解?都解决了什么问题?
    ReactHooks详解:理解与实际应用ReactHooks是React16.8引入的一项重要特性,它彻底改变了组件的写法和管理状态的方式,极大地简化了函数组件的开发。本文将深入探讨ReactHooks的概念、解决的问题,并结合实际项目代码进行讲解。目录结构ReactHooks简介Hooks解决的......
  • 说说CSS的优先级是如何计算的?
    CSS的优先级计算是一个相对复杂但又非常重要的概念,在前端开发中,它决定了当多个样式规则应用于同一个元素时,哪个规则将最终生效。以下是CSS优先级计算的详细解释:1.优先级计算的基础CSS的优先级主要由选择器的类型和它们出现的次数决定。每个选择器都有一个相应的权重值,这些权重......