美文网首页
智能合约入门——Remix+合约调用

智能合约入门——Remix+合约调用

作者: prophet__ | 来源:发表于2020-09-30 16:59 被阅读0次

    最近这段时间Defi很火,但是如果你只是一个小散户,你可能只看到了表面的一层机会,而且往往还抓不住。区块链是程序的世界,科学家们统治着区块链,想要在未来的世界里深入了解区块链,用程序自动化流程是必不可少的。

    当我们使用程序调用区块链上的数据时,往往需要选择一种比较方便的语言,现有的框架主要以JavaScript为主。

    现在世界上比较流行的在线ide可以满足大部分的编程需求,Remix算是区块链应用里的集大成者。
    https://remix.ethereum.org/

    安装插件

    这个在线的IDE可以选择一个入门教程,在选择插件获取(左侧图标最下面那个),搜索LEARNETH,然后选择Active就可以点击新出现的图标进入了。

    1.Web.js请求区块链数据

    (async () => {
      try {
        let blockNumber = await web3.eth.getBlockNumber()
        console.log('current block number : ', blockNumber)
      } catch (e) {
        console.log(e.message)
      }
    })()
    

    这几行代码封装了一个自调用的web3.js程序,可以在控制台返回当前以太坊的区块高度,使用的是web3.eth.getBlockNumber()这个函数。

    在进行编译和执行操作前,需要将编译器设置为Injected Web3或者是Web3 Provider,JavaScript VM不支持这个web3.js库。

    然后在下面的终端输入:

    remix.execute()
    

    就可以得到当前区块高度了。

    2.与一个合约进行交互

    刚刚我们只是通过它获取了一个区块链的信息,第二步我们就可以通过程序与以太坊上已经部署的合约进行交互了。

    凡是部署到以太坊上的合约,只要它不自毁,就可以一直存在在以太坊上,而且由于去中心化的设计,部署者和使用者都不需要自己拥有服务器,大大减少了开发者的研发成本。

    合约可以看成是一个类(就是一个集合体),里面有很多的函数和变量,根据部署时设置的不同,有些函数根据权限的不同只有固定的人可以调用和查看,有些函数是所有人都可以使用和查看的。

    这次的例子是使用web3.eth的库来调用tether合约,获取它的名字,代码如下:

        (async () => {
            try {
                const abi = ...
                const contractAddress = '0xdac17f958d2ee523a2206206994597c13d831ec7'
    
                // instantiate a new web3 Contract object
                let contract = new web3.eth.Contract(abi, contractAddress)
    
                // call the autogenerated function to return the value of a public state variable
                let name = await contract.methods.name().call()
            
                // log it to the remix console
                console.log(name)
            
            } catch (e) {
                console.log(e.message)
            }  
    
        })()
    

    这里关于ABI这一块我进行了简化(太长了),如果我们要调用一个合约,我们得知道它的ABI以及地址,比如我们要掉用的这个合约的ABI可以通过它的地址从ethscan上查到:https://etherscan.io/address/0xdac17f958d2ee523a2206206994597c13d831ec7#code

    ABI

    我们在这个页面上可以点击Read contract获取这个合约的变量信息,在这里可以看到它的name是Tether USD。

    那么我们切换回刚刚的页面,然后进行编译和执行,同样的我们要注意刚刚的编译选项,选择Injected Web3或者是Web3 Provider,同时我们还要注意切换到Mainnet。

    tips:以太网分为主网和测试网,测试网可以免费获取eth进行测试和部署,对于开发者来说可以在测试网上测试通过了再进行主网部署。主网和测试网的切换可以通过Metamask切换。

    在完成了之后在网页下部的终端内输入remix.execute(),就可以看到反馈了。

    OK到这里我们的入门第一步就结束了

    总结一下:
    1.通过web3.js可以访问以太网的信息,包括区块高度,交易等等。
    2.通过web3.js可以与以太网上的合约进行交互,交互需要拥有权限,并且知道合约的地址和ABI。

    相关文章

      网友评论

          本文标题:智能合约入门——Remix+合约调用

          本文链接:https://www.haomeiwen.com/subject/cxeuuktx.html