Botanix 是比特币上完全去中心化的第 2 层 EVM,项目结合EVM 的易用性和多功能性与比特币的去中心化和安全性相结合,在比特币之上构建以太坊虚拟机 (EVM)。其定位非常清晰,希望成为比特币DeFi的中心,激活比特币资本市场,解锁比特币链上的万亿美元市场。
如果你关心btc相关的项目,值得参与测试网,参与方式:配置钱包网络、领水、使用生态Dapp,部署合约或代币等。
Botanix EVM 与以太坊完全等效。因此,它可与所有 EVM 钱包(如 MetaMask / Okx 插件)直接配合使用。
有两种不同的方式可以连接到测试网络。
打开链接:https://bridge.botanixlabs.dev/ 点击“Connect”钱包授权确认即可自动连接测试网
如果您想自动连接到 Botanix 测试网,只需导航到我们的Bridge,我们将指导您完成整个过程。
要将 Botanix Testnet 手动添加到您的钱包,请使用以下信息:
Network Name: Botanix Testnet
New RPC URL: https://node.botanixlabs.dev
Chain ID: 3636
Currency Symbol: BTC
Block Explorer URL: https://testnet.botanixscan.io/
如何添加自定义测试网络,请按照此处的 MetaMask 说明进行操作即可:
做日常交互需要测试代币,下面介绍2种领水方式:
前往https://bridge.botanixlabs.dev/,连接并验证你的 web3 钱包,复制您的存款地址(Gateway Address)
前往https://faucet.mutinynet.com/ 选择金额,将存款地址粘贴到目标字段,然后 -> rain
ps:这个环节,我经常操作失败,多试几回才能提交成功。
Make in rain 成功后,按照链接“在 mempool.space 上查看”(https://mutinynet.com/)并复制 交易 tx ID
返回https://bridge.botanixlabs.dev/ 页面填写注册您的交易ID:
经过 2 次确认后(claim)即可领取资金,资金将在约 5 秒后显示在您的钱包中:
访问银河:https://app.galxe.com/quest/botanixlabs
选择相关的任务去做,可以领到不同数量的测试代币(领水)
第一种最简单的方式,访问链接:https://docs.google.com/forms/d/e/1FAIpQLScTauOXpRQLYpg7I0lL4cs37scVkicH5VaxjSidhLYhsliiAw/viewform
填写您的evm address, 第二天会接收到少量的btc
你的不同 evm 地址之间,用metamask等钱包插件,选择发送菜单,输入发送金额, 提交即可完成交易:
访问链接:https://bridge.botanixlabs.dev/,连接您的钱包,进行身份验证并选择“Withdraw”选项卡。
选择提款金额,填写接收的比特币钱包地址(可以填写你领水那个地址,也可以填写退回水龙的公共地址:(tb1qd28npep0s8frcm3y7dxqajkcy2m40eysplyr9v)
只需单击“提款”,按照钱包中的说明进行操作,一段时间后,资金就会显示在您的比特币钱包中,
您可以在Mutinynet 内存池中检查此地址的传入交易:
链接换成你自己的接收地址,即可查看:
前往合约编辑工具 Ethereum Remix IDE: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 版本选择正确的编译器:
执行部署"Display" 合约:
部署成功后,可通过合约地址,在metamask上添加属于自己的代币:
打开生态Dapp 页面: https://www.botanixlabs.xyz/en/testnet
安排好自己的时间,日常能多做尽量多做, 增加 tx 数量~
第一个 Botanix Bridge ,在领水/提款的时候,已经参与过交互了。
现在挑比较简单的第二个 bitzy.app 进行各种代币的 swap 即可:
其他dapp有时间也要多交互~
觉得有用的,记得关注我的推特,将会持续整理潜在空投交互/dapp/节点/挖矿等详细教程~