Contract Name:
BiddingProxy
Contract Source Code:
File 1 of 1 : BiddingProxy
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.18 <0.8.20;
/*
AuctionMaster, intDeedMaster, extDeedMaster, IntDeedProxy, BiddingProxy ( by pepihasenfuss.eth, copyright (c) 2025, based on ENS 1.0 Temporary Hash Registrar, a Vickrey Auction introduced by Nick Johnson and the ENS team )
A Vickrey auction or sealed-bid second-price auction (SBSPA) is a type of sealed-bid auction.
ungravel.eth, GroupWalletFactory, GroupWalletMaster, GroupWallet, ProxyWallet, TokenMaster, ProxyToken, PrePaidContract, AuctionMaster, BiddingProxy, intDeedMaster, extDeedMaster, IntDeedProxy, Intentions by pepihasenfuss.eth 2017-2025, Copyright (c) 2025
========================
// ENS, ENSRegistryWithFallback, PublicResolver, Resolver, FIFS-Registrar, Registrar, AuctionRegistrar, BaseRegistrar, ReverseRegistrar, DefaultReverseResolver, ETHRegistrarController,
// PriceOracle, SimplePriceOracle, StablePriceOracle, ENSMigrationSubdomainRegistrar, CustomRegistrar, Root, RegistrarMigration are contracts of "ENS", by Nick Johnson and team.
//
// Copyright (c) 2018, True Names Limited / ENS Labs Limited
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
interface ABS_AUC_ENS {
function owner(bytes32 node) external view returns(address);
function resolver(bytes32 node) external view returns(address);
function ttl(bytes32 node) external view returns(uint64);
function setOwner(bytes32 node, address ensowner) external;
function setSubnodeOwner(bytes32 node, bytes32 label, address ensowner) external;
function setResolver(bytes32 node, address ensresolver) external;
function setTTL(bytes32 node, uint64 ensttl) external;
function recordExists(bytes32 nodeENS) external view returns (bool);
event NewOwner(bytes32 indexed node, bytes32 indexed label, address ensowner);
event Transfer(bytes32 indexed node, address ensowner);
event NewResolver(bytes32 indexed node, address ensresolver);
event NewTTL(bytes32 indexed node, uint64 ensttl);
}
abstract contract ABS_TokenProxy {
function owner() external virtual view returns (address ow);
function balanceOf(address tokenOwner) external virtual view returns (uint thebalance);
function name() external virtual view returns (string memory);
function transferFrom_78S(address from, address toReceiver, uint amount) external virtual;
function tokenAllow(address tokenOwner,address spender) external virtual view returns (uint256 tokens);
function transfer_G8l(address toReceiver, uint amount) external virtual;
function transferAdjustPrices(address toReceiver, uint amount, uint payment, bytes32 dhash, address deedContract) external virtual;
function nameBidBucket(bytes32 dhash,bytes32 labelhash,address deedContract) external virtual;
}
abstract contract Abstract_Resolver {
mapping (bytes32 => string) public name;
}
abstract contract ABS_ReverseRegistrar {
Abstract_Resolver public defaultResolver;
function node(address addr) external virtual pure returns (bytes32);
function setName(string memory name) external virtual returns (bytes32);
}
abstract contract ABS_Reg {
ABS_ReverseRegistrar public reverseR;
function state_pln(bytes32 _hash) public view virtual returns (uint);
function saveExtDeedCntr_gm9(address _sender,bytes32 _hash,uint _value) public payable virtual;
function unsealExternalBid_qfG(bytes32 _hash) public payable virtual;
function finalizeExternalAuction_WmS(bytes32 _hash) public payable virtual;
function cancelExternalBid_9ig(bytes32 seal, bytes32 hash) public payable virtual;
function tld() public view virtual returns (string memory);
}
// ************************* BiddingProxy CONTRACT *****************************
// The bidding proxy contract is deployed for each external bidder.
// External bidders may remain anonymous, they are not a member of the team/group.
// BiddingProxy is a safe and cost-saving method to participate in a Funding Auction without beeing member of the group.
pragma solidity ^0.8.18 <0.8.20;
contract BiddingProxy {
address internal masterCopy;
address public owner;
uint64 public creationDate;
ABS_Reg public registrar;
bytes32 public lhash;
event DeedCreated(address indexed,bytes32 indexed);
constructor(address _masterCopy,bytes32 _lhash) payable {
masterCopy = _masterCopy;
registrar = ABS_Reg(msg.sender);
creationDate = uint64(block.timestamp);
lhash = _lhash;
emit DeedCreated(address(this),_lhash);
}
fallback () external payable
{
// solium-disable-next-line security/no-inline-assembly
assembly {
let ptr := mload(0x40)
calldatacopy(ptr, 0, calldatasize())
let success := delegatecall(gas(),and(sload(0),0xffffffffffffffffffffffffffffffffffffffff),ptr,calldatasize(),0,0)
returndatacopy(0, 0, returndatasize())
if eq(success,0) { revert(0,0x204) }
return(0, returndatasize())
}
}
}
// ************************* BiddingProxy CONTRACT *****************************