PortoENSRegistrar

Description:

Smart contract deployed on Ethereum with Factory features.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

{{
  "language": "Vyper",
  "sources": {
    "src/PortoENSRegistrar.vy": {
      "content": "# pragma version ^0.4.3

interface INameWrapper:
    def setSubnodeOwner(parentNode: bytes32, label: String[32], owner: address, fuses: uint32, expiry: uint64): nonpayable
    def setSubnodeRecord(parentNode: bytes32, label: String[32], owner: address, resolver: address, ttl: uint64, fuses: uint32, expiry: uint64): nonpayable

interface IPublicResolver:
    def setAddr(node: bytes32, addr: address): nonpayable

interface IOrchestrator:
    def accountImplementationOf(eoa: address) -> address: view


# Mainnet Namewrapper: 0xD4416b13d2b3a9aBae7AcD5D6C2BbDBE25686401
NameWrapper: immutable(INameWrapper)
PublicResolver: immutable(IPublicResolver) # Mainnet 0xF29100983E058B709F3D539b0c765937B804AC15
Orchestrator: constant(IOrchestrator) = IOrchestrator(0xB447BA5a2Fb841406cdac4585Fdc28027d7Ae503) # Mainnet
ITHACA_ACCOUNT: constant(address) = 0x96925ECC9c2132C36b959c0de532576169d37296

@deploy
def __init__(namewrapper: INameWrapper, resolver: IPublicResolver):
    NameWrapper = namewrapper
    PublicResolver = resolver


@external
def register(parent_node: bytes32, label: String[32]):
    implementation: address = staticcall Orchestrator.accountImplementationOf(msg.sender)
    assert implementation == ITHACA_ACCOUNT, "Not using Ithaca account"
    extcall NameWrapper.setSubnodeOwner(
        parent_node,
        label,
        self,
        0,
        max_value(uint64)
    )
    node: bytes32 = keccak256(concat(parent_node, keccak256(label)))
    extcall PublicResolver.setAddr(node, msg.sender)
    extcall NameWrapper.setSubnodeRecord(
        parent_node,
        label,
        msg.sender,
        PublicResolver.address,
        0,
        0,
        max_value(uint64)
    )

# ERC1155 Receiver functions
@external
def onERC1155Received(operator: address, from_: address, id: uint256,
        _value: uint256, data: Bytes[1024]) -> bytes4:
    return method_id("onERC1155Received(address,address,uint256,uint256,bytes)", output_type=bytes4)

@external
def onERC1155BatchReceived(operator: address, from_: address, ids: uint256,
        values: uint256, data: Bytes[1024]) -> bytes4:
    return method_id("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)", output_type=bytes4)

@external
def supportsInterface(interfaceID: bytes4) -> bool:
    return interfaceID == 0x4e2312e0 or interfaceID == 0x01ffc9a7
",
      "sha256sum": "8e2699ad717fcb51d9493191c575bd8503b3662a6c3e794eab1e9b97a62b65d1"
    }
  },
  "settings": {
    "outputSelection": {
      "src/PortoENSRegistrar.vy": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    },
    "search_paths": [
      "."
    ]
  },
  "compiler_version": "v0.4.3+commit.bff19ea2",
  "integrity": "67d3f4caa9b0df69066fc4d38f8df80bed412176e4161d96b164d0259b059307"
}}

Tags:
ERC165, Factory|addr:0xb0df238ff54b2c102fe1e81191a4f806937016d7|verified:true|block:23395553|tx:0xe86b048c0db294b4958bde26355cd672f26513cc5f14e9e810431e0ccd568d23|first_check:1758278880

Submitted on: 2025-09-19 12:48:01

Comments

Log in to comment.

No comments yet.