Escalation period

The buyer escalated the dispute. The dispute resolver should provide a final split between the buyer and seller.

Previous state
State
Next state(s)

DISPUTED

ESCALATED

RETRACTED RESOLVED DECIDED REFUSED

Period actions

Seller
Buyer
Dispute resolver

Resolve the dispute

Retracts the dispute

Decide the dispute

Resolve the dispute

Refuse to decide

Post-period actions

Seller
Buyer
Dispute resolver

Expire the escalated dispute

Expire the escalated dispute

Expire the escalated dispute


TypeScript SDK

The buyer and the seller mutually resolve the dispute and submit the decision on how the pot is split.

The buyer signs the proposal; the seller submits the transaction

const exchangeId = "1534";
const buyerPercentBasisPoints = 30_00;

const {
      r: sigR,
      s: sigS,
      v: sigV
    } = await buyerCoreSDK.signDisputeResolutionProposal({
      exchangeId,
      buyerPercentBasisPoints
});

await sellerCoreSDK.resolveDispute({
      exchangeId: exchangeId,
      buyerPercentBasisPoints,
      sigR,
      sigS,
      sigV
});

The seller signs the proposal; the buyer submits the transaction

const exchangeId = "1534";
const buyerPercentBasisPoints = 30_00;

const {
      r: sigR,
      s: sigS,
      v: sigV
    } = await sellerCoreSDK.signDisputeResolutionProposal({
      exchangeId,
      buyerPercentBasisPoints
});

await buyerCoreSDK.resolveDispute({
      exchangeId: exchangeId,
      buyerPercentBasisPoints,
      sigR,
      sigS,
      sigV
});

Solidity

The buyer and the seller mutually resolve the dispute and submit the decision on how the pot is split.

The other party signed the proposal, and this contract is submitting the transaction

IBosonDisputeHandler bosonProtocol = IBosonDisputeHandler(_bosonProtocolAddress);
uint256 exchangeId = 1534;
uint256 buyerPercent = 30_00;
bytes memory signature = 0x...; // must be provided by other signer

bosonProtocol.resolveDispute(exchangeId, buyerPercent, signature);

The other party is submitting the transaction, and this contract uses EIP1271 verification

import { IERC1271 } from "@openzeppelin/contracts/interfaces/IERC1271.sol";

function isValidSignature(bytes32, bytes calldata) public view override returns (bytes4) {
    // validate the signature, e.g. ECDSA verification
    ...
    
    // If everything is ok, return the correct magic value
    return IERC1271.isValidSignature.selector;
}

Last updated