# 潜在空投-Botanixlabs测试网操作教程

By [Mossmind](https://paragraph.com/@mossmind) · 2024-12-20

---

项目介绍
----

Botanix 是比特币上完全去中心化的第 2 层 EVM，项目结合EVM 的易用性和多功能性与比特币的去中心化和安全性相结合，在比特币之上构建以太坊虚拟机 (EVM)。其定位非常清晰，希望成为比特币DeFi的中心，激活比特币资本市场，解锁比特币链上的万亿美元市场。

如果你关心btc相关的项目，值得参与测试网，参与方式：配置钱包网络、领水、使用生态Dapp，部署合约或代币等。

安装 EVM钱包
--------

Botanix EVM 与以太坊完全等效。因此，它可与所有 EVM 钱包（如 MetaMask / Okx 插件）直接配合使用。

连接到测试网
------

有两种不同的方式可以连接到测试网络。

### 自动连接：

打开链接：[https://bridge.botanixlabs.dev/](https://bridge.botanixlabs.dev/) 点击“Connect”钱包授权确认即可自动连接测试网

如果您想自动连接到 Botanix 测试网，只需导航到我们的Bridge，我们将指导您完成整个过程。

### 手动连接：

要将 Botanix Testnet 手动添加到您的钱包，请使用以下信息：

Network Name: Botanix Testnet

New RPC URL: [https://node.botanixlabs.dev](https://node.botanixlabs.dev)

Chain ID: 3636

Currency Symbol: BTC

Block Explorer URL: [https://testnet.botanixscan.io/](https://testnet.botanixscan.io/)

如何添加自定义测试网络，请按照此处的 MetaMask 说明进行操作即可：

![](https://storage.googleapis.com/papyrus_images/dd6c70302b83b19fe4ab27adb9ba41490a21a0c598d3ec2d9d657e4935bde86e.png)

领取测试代币-领水
---------

做日常交互需要测试代币，下面介绍2种领水方式：

### Mutinynet 水龙头 + Botanix Bridge

前往[https://bridge.botanixlabs.dev/](https://bridge.botanixlabs.dev/)，连接并验证你的 web3 钱包，复制您的存款地址(Gateway Address)

![](https://storage.googleapis.com/papyrus_images/a3b36c5af48851612758d01773511c9e89cc925318724d94b07f049d145a0143.png)

前往[https://faucet.mutinynet.com/](https://faucet.mutinynet.com/) 选择金额，将存款地址粘贴到目标字段，然后 -> rain

![](https://storage.googleapis.com/papyrus_images/e6c5dfa5ce72cf509ee52cba2fedb2f345c4e8f15ced98f1f873bb579387de6a.png)

ps：这个环节，我经常操作失败，多试几回才能提交成功。

Make in rain 成功后，按照链接“在 mempool.space 上查看”（[https://mutinynet.com/](https://mutinynet.com/)）并复制 交易 tx ID

![](https://storage.googleapis.com/papyrus_images/172087d8c41b34f731367481604ef9e29a915d6591b5d44380eb006aa92d679c.png)

返回[https://bridge.botanixlabs.dev/](https://bridge.botanixlabs.dev/) 页面填写注册您的交易ID：

![](https://storage.googleapis.com/papyrus_images/d601e338f766ec22ef2ad8b0f2f8395dd249bb42151e0f497ce02876ec86dae4.png)

经过 2 次确认后（claim）即可领取资金，资金将在约 5 秒后显示在您的钱包中：

![](https://storage.googleapis.com/papyrus_images/191294b1312760ee8cfcb608e6d4226bb1abcd051d14eaf3528b8357ae5a5983.png)

### 银河任务领取

访问银河：[https://app.galxe.com/quest/botanixlabs](https://app.galxe.com/quest/botanixlabs)

选择相关的任务去做，可以领到不同数量的测试代币（领水）

![](https://storage.googleapis.com/papyrus_images/1b8612c715175b2effb63a83a7ee9e410be81c13b75b1598f824e8c29f31da90.png)

第一种最简单的方式，访问链接：[https://docs.google.com/forms/d/e/1FAIpQLScTauOXpRQLYpg7I0lL4cs37scVkicH5VaxjSidhLYhsliiAw/viewform](https://docs.google.com/forms/d/e/1FAIpQLScTauOXpRQLYpg7I0lL4cs37scVkicH5VaxjSidhLYhsliiAw/viewform)

![](https://storage.googleapis.com/papyrus_images/e31fe27a94ef9a187a65805b87b9f7280cc39d21ed0c181bbe9d5944b3ae0547.png)

填写您的evm address, 第二天会接收到少量的btc

转账发送
----

你的不同 evm 地址之间，用metamask等钱包插件，选择发送菜单，输入发送金额， 提交即可完成交易：

![](https://storage.googleapis.com/papyrus_images/b80b16e46efd7169a763abbbc946a0d9f2182e92030a071c459cabc7d452c1c6.png)

提款 Withdraw
-----------

访问链接：[https://bridge.botanixlabs.dev/](https://bridge.botanixlabs.dev/)，连接您的钱包，进行身份验证并选择“Withdraw”选项卡。

选择提款金额，填写接收的比特币钱包地址(可以填写你领水那个地址，也可以填写退回水龙的公共地址：（tb1qd28npep0s8frcm3y7dxqajkcy2m40eysplyr9v)

![](https://storage.googleapis.com/papyrus_images/9f6425b98c8024a5115ef08bae49ce04346ff708b2b7eed522f6f0202a0480cb.png)

只需单击“提款”，按照钱包中的说明进行操作，一段时间后，资金就会显示在您的比特币钱包中，

您可以在Mutinynet 内存池中检查此地址的传入交易：

[https://mutinynet.com/zh/address/tb1ppqsnqpql3qxl4uw5hm7es2pw6r9krwy08y3c3xcfwnhx8jsp0lusqqp5y3](https://mutinynet.com/zh/address/tb1ppqsnqpql3qxl4uw5hm7es2pw6r9krwy08y3c3xcfwnhx8jsp0lusqqp5y3)

链接换成你自己的接收地址，即可查看：

![](https://storage.googleapis.com/papyrus_images/b8ed7edafb7d5ef64757f1f265faa5b8d7f66bafac2b5c75c58318f5fbfc0dd9.png)

部署合约
----

前往合约编辑工具 Ethereum Remix IDE：[https://remix.ethereum.org/](https://remix.ethereum.org/) 并创建一个新的 Solidity 文件，例如Botanix-token.sol。将以下代码粘贴到新的 Solidity 脚本中：

    pragma solidity ^0.4.24;
    
    //Safe Math Interface
    
    contract SafeMath {
    
        function safeAdd(uint a, uint b) public pure returns (uint c) {
            c = a + b;
            require(c >= a);
        }
    
        function safeSub(uint a, uint b) public pure returns (uint c) {
            require(b <= a);
            c = a - b;
        }
    
        function safeMul(uint a, uint b) public pure returns (uint c) {
            c = a * b;
            require(a == 0 || c / a == b);
        }
    
        function safeDiv(uint a, uint b) public pure returns (uint c) {
            require(b > 0);
            c = a / b;
        }
    }
    
    
    //ERC Token Standard #20 Interface
    
    contract ERC20Interface {
        function totalSupply() public constant returns (uint);
        function balanceOf(address tokenOwner) public constant returns (uint balance);
        function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
        function transfer(address to, uint tokens) public returns (bool success);
        function approve(address spender, uint tokens) public returns (bool success);
        function transferFrom(address from, address to, uint tokens) public returns (bool success);
    
        event Transfer(address indexed from, address indexed to, uint tokens);
        event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
    }
    
    
    //Contract function to receive approval and execute function in one call
    
    contract ApproveAndCallFallBack {
        function receiveApproval(address from, uint256 tokens, address token, bytes data) public;
    }
    
    //Actual token contract
    
    contract BotanixTestToken is ERC20Interface, SafeMath {
        string public symbol;
        string public  name;
        uint8 public decimals;
        uint public _totalSupply;
    
        mapping(address => uint) balances;
        mapping(address => mapping(address => uint)) allowed;
    
        constructor() public {
            symbol = "代币名";
            name = "Botanix testnet token";
            decimals = 2;
            _totalSupply = 1000000000;
            balances[evm 钱包地址] = _totalSupply;
            emit Transfer(address(0), evm 钱包地址, _totalSupply);
        }
    
        function totalSupply() public constant returns (uint) {
            return _totalSupply  - balances[address(0)];
        }
    
        function balanceOf(address tokenOwner) public constant returns (uint balance) {
            return balances[tokenOwner];
        }
    
        function transfer(address to, uint tokens) public returns (bool success) {
            balances[msg.sender] = safeSub(balances[msg.sender], tokens);
            balances[to] = safeAdd(balances[to], tokens);
            emit Transfer(msg.sender, to, tokens);
            return true;
        }
    
        function approve(address spender, uint tokens) public returns (bool success) {
            allowed[msg.sender][spender] = tokens;
            emit Approval(msg.sender, spender, tokens);
            return true;
        }
    
        function transferFrom(address from, address to, uint tokens) public returns (bool success) {
            balances[from] = safeSub(balances[from], tokens);
            allowed[from][msg.sender] = safeSub(allowed[from][msg.sender], tokens);
            balances[to] = safeAdd(balances[to], tokens);
            emit Transfer(from, to, tokens);
            return true;
        }
    
        function allowance(address tokenOwner, address spender) public constant returns (uint remaining) {
            return allowed[tokenOwner][spender];
        }
    
        function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) {
            allowed[msg.sender][spender] = tokens;
            emit Approval(msg.sender, spender, tokens);
            ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data);
            return true;
        }
    
        function () public payable {
            revert();
        }
    }
    

替换以下值：

第 62 行：symbol = " ABC ";选择你自己的符号

第 63 行：name = " Botanix testnet token ";选择你自己的名字

第 64 行： decimals = 2；设置小数（代币可分割的值，可使用 0 到 8 个小数单位）并根据需要建立总供应值

第 65 行 \_totalSupply = 100000 ; 选择总供应量

第 66 行：balances\[ YOUR\_METAMASK\_WALLET\_ADDRESS \] = \_totalSupply;请将 YOUR\_METAMASK\_WALLET\_ADDRESS 更改为您自己的钱包地址（您可以在 MetaMask 界面中找到此地址）

第 67 行：发出 Transfer(address(0), YOUR\_METAMASK\_WALLET\_ADDRESS , \_totalSupply);

编译"Compile"智能合约。确保根据所选的 Solidity 版本选择正确的编译器:

![](https://storage.googleapis.com/papyrus_images/f9ec530f8eeaa9da6343b5febb2a6ee40b0bb6c8bde0508603be41cb2454cf9a.png)

执行部署"Display" 合约：

![](https://storage.googleapis.com/papyrus_images/9e8ff3173d403228ded5f835e7f6c699be6c522b8ad48372fc0d82db2f9c787e.png)

部署成功后，可通过合约地址，在metamask上添加属于自己的代币：

![](https://storage.googleapis.com/papyrus_images/99647a717a442aa16f6d53e1cba68efceb4aae6dc001c927618fa63ef9f56090.png)

使用生态Dapp
--------

打开生态Dapp 页面： [https://www.botanixlabs.xyz/en/testnet](https://www.botanixlabs.xyz/en/testnet)

![](https://storage.googleapis.com/papyrus_images/605edf1d9c606c0407a86739f2a7cf93919843ed3ead282e70bea2f87a5156c0.png)

安排好自己的时间，日常能多做尽量多做, 增加 tx 数量~

第一个 Botanix Bridge ，在领水/提款的时候，已经参与过交互了。

现在挑比较简单的第二个 bitzy.app 进行各种代币的 swap 即可：

![](https://storage.googleapis.com/papyrus_images/4c94470e8518d45b2c3cf979d490c18492a57d141ff5ad21b29842af670158a7.png)

其他dapp有时间也要多交互~

**结语**
------

觉得有用的，记得关注我的推特，将会持续整理潜在空投交互/dapp/节点/挖矿等详细教程～

[https://x.com/MossmindAi](https://x.com/MossmindAi)

---

*Originally published on [Mossmind](https://paragraph.com/@mossmind/botanixlabs)*
