mirror of git3://git3.w3q/git3-contract
commit
a2b9329a79
@ -0,0 +1,42 @@
|
|||||||
|
//SPDX-License-Identifier: GPL-3.0
|
||||||
|
pragma solidity ^0.8.0;
|
||||||
|
|
||||||
|
contract Git3NameService {
|
||||||
|
mapping(string => address) public nameHub;
|
||||||
|
mapping(string => address) public nameOwner;
|
||||||
|
string[] public nameList;
|
||||||
|
|
||||||
|
mapping(address => mapping(string => string)) public HubRecords;
|
||||||
|
|
||||||
|
constructor() {}
|
||||||
|
|
||||||
|
modifier onlyHubOwner(string memory name) {
|
||||||
|
require(nameOwner[name] == msg.sender, "Only name owner can do this");
|
||||||
|
_;
|
||||||
|
}
|
||||||
|
|
||||||
|
function registerHub(string memory name, address hub) public {
|
||||||
|
require(nameHub[name] == address(0), "Name already registered");
|
||||||
|
nameHub[name] = hub;
|
||||||
|
nameOwner[name] = msg.sender;
|
||||||
|
nameList.push(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
function nameListLength() public view returns (uint256) {
|
||||||
|
return nameList.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
function rebindHubAddress(
|
||||||
|
string memory name,
|
||||||
|
address hub
|
||||||
|
) public onlyHubOwner(name) {
|
||||||
|
nameHub[name] = hub;
|
||||||
|
}
|
||||||
|
|
||||||
|
function transferNameOwner(
|
||||||
|
string memory name,
|
||||||
|
address newOwner
|
||||||
|
) public onlyHubOwner(name) {
|
||||||
|
nameOwner[name] = newOwner;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
import { ethers } from "hardhat";
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
let provider = ethers.provider;
|
||||||
|
let [operator] = await ethers.getSigners();
|
||||||
|
let nonce = await operator.getTransactionCount();
|
||||||
|
console.log(operator.address, nonce, await operator.getBalance());
|
||||||
|
|
||||||
|
let price = await provider.getFeeData();
|
||||||
|
let net = await provider.getNetwork();
|
||||||
|
console.log(price, net.chainId);
|
||||||
|
|
||||||
|
const Nameservice = await ethers.getContractFactory("Git3NameService");
|
||||||
|
const ns = await Nameservice.deploy({
|
||||||
|
nonce: nonce,
|
||||||
|
type: 2,
|
||||||
|
maxFeePerGas: price.maxFeePerGas!,
|
||||||
|
maxPriorityFeePerGas: price.maxPriorityFeePerGas!,
|
||||||
|
});
|
||||||
|
|
||||||
|
let receipt = await ns.deployed();
|
||||||
|
console.log(receipt.deployTransaction.hash);
|
||||||
|
console.log("NS Contract", ns.address);
|
||||||
|
}
|
||||||
|
|
||||||
|
// We recommend this pattern to be able to use async/await everywhere
|
||||||
|
// and properly handle errors.
|
||||||
|
main().catch((error) => {
|
||||||
|
console.error(error);
|
||||||
|
process.exitCode = 1;
|
||||||
|
});
|
Loading…
Reference in new issue