Docs
0.0.4
Search…
⌃K

CFAPenaltyBidFacet

Documentation for the CFAPenaltyBidFacet contract.

Summary

The CFAPenaltyBidFacet implements the functions that define the Geo Web's auction system.
The Geo Web introduces an "owner-forgiving" auction mechanism instead of a "pure" partial commmon ownership/Harberger tax system that would implement instantaneous transfers of assets upon an incoming (higher) bid.
CFAPenaltyBidFacet gives the current licensor an exclusive window to reject or accept a rival bid. To reject a bid, the licensor must pay a percentage of the incoming bid value as a penalty. Accepting a bid transfers the parcel to the bidder, returns the appropriate collateral to the bidder, and transfers the sale proceeds (plus or minus applicable network fees) to the now former parcel licensor.

Code

Contract Functions

CFAPenaltyBidFacet

Handles bidding using CFAs and penalities

BidAccepted

event BidAccepted(address _payer, address _bidder, uint256 forSalePrice)
Emitted when a bid is accepted

BidRejected

event BidRejected(address _payer, address _bidder, uint256 forSalePrice)
Emitted when a bid is rejected

TransferTriggered

event TransferTriggered(address _sender, address _payer, address _bidder, uint256 forSalePrice)
Emitted when a transfer is triggered

onlyIfPendingBid

modifier onlyIfPendingBid()

onlyIfNotPendingBid

modifier onlyIfNotPendingBid()

onlyAfterBidPeriod

modifier onlyAfterBidPeriod()

onlyDuringBidPeriod

modifier onlyDuringBidPeriod()

shouldBidPeriodEndEarly

function shouldBidPeriodEndEarly() public view returns (bool)
Should bid period end early

pendingBid

function pendingBid() external pure returns (struct LibCFAPenaltyBid.Bid)
Get pending bid

hasPendingBid

function hasPendingBid() external view returns (bool)
Checks if there is a pending bid

calculatePenalty

function calculatePenalty() external view returns (uint256)
Get penalty payment

editBid

function editBid(int96 newContributionRate, uint256 newForSalePrice) external
Edit bid - Must be the current payer - Must have permissions to update flow for payer
Parameters
Name
Type
Description
newContributionRate
int96
New contribution rate for bid
newForSalePrice
uint256
Intented new for sale price. Must be within rounding bounds of newContributionRate

placeBid

function placeBid(int96 newContributionRate, uint256 newForSalePrice) external
Place a bid to purchase license as msg.sender - Pending bid must not exist - Must have permissions to create flow for bidder - Must have ERC-20 approval of payment token
Parameters
Name
Type
Description
newContributionRate
int96
New contribution rate for bid
newForSalePrice
uint256
Intented new for sale price. Must be within rounding bounds of newContributionRate

acceptBid

function acceptBid() external
Accept a pending bid as the current payer - Must be payer - Pending bid must exist - Must be within bidding period

rejectBid

function rejectBid(int96 newContributionRate, uint256 newForSalePrice) external
Reject a pending bid as the current payer - Must be payer - Pending bid must exist - Must be within bidding period - Must approve penalty amount
Parameters
Name
Type
Description
newContributionRate
int96
New contribution rate for bid
newForSalePrice
uint256
Intented new for sale price. Must be within rounding bounds of newContributionRate

triggerTransfer

function triggerTransfer() external
Trigger a transfer after bidding period has elapsed - Pending bid must exist - Must be after bidding period

LibCFAPenaltyBid

STORAGE_POSITION_OUT_BID

bytes32 STORAGE_POSITION_OUT_BID

Bid

struct Bid {
uint256 timestamp;
address bidder;
int96 contributionRate;
uint256 perSecondFeeNumerator;
uint256 perSecondFeeDenominator;
uint256 forSalePrice;
}

pendingBid

function pendingBid() internal pure returns (struct LibCFAPenaltyBid.Bid ds)

FlowChangeType

enum FlowChangeType {
CREATE_FLOW,
UPDATE_FLOW,
DELETE_FLOW
}

_getBooleanFlowOperatorPermissions

function _getBooleanFlowOperatorPermissions(uint8 permissions, enum LibCFAPenaltyBid.FlowChangeType flowChangeType) internal pure returns (bool flowchangeTypeAllowed)

_calculatePenalty

function _calculatePenalty() internal view returns (uint256)
Calculate the penalty needed for the pending bid to be rejected

_clearPendingBid

function _clearPendingBid() internal

_triggerTransfer

function _triggerTransfer() internal
Trigger transfer of license

_rejectBid

function _rejectBid(int96 newContributionRate, uint256 newForSalePrice) internal
Reject Bid

Name
Type
Description
id
uint256
ID of land parcel