Dispute resolver

The dispute resolver entity MUST be created before any dispute resolver actions can be performed.

Dispute resolvers decide the dispute outcome when the buyer and seller cannot do it mutually. The dispute resolver is a complex role with admin, assistant and treasury. Initially, all roles must be the same Ethereum address; however, the admin can later change them to other addresses.

Dispute resolvers decide in which tokens they are willing to accept the fee and what the amount is.

Dispute resolvers can set a list of allowed sellers, i.e. the seller ID for which they are willing to do the dispute resolution.

Dispute resolver's funds management is described in Deposit and withdraw.

TypeScript SDK

Creates a new dispute resolver

const drAddress = signerWallet.address;

await coreSDK.createDisputeResolver({
  assistant: drAddress,
  admin: drAddress,
  treasury: drAddress,
  escalationResponsePeriodInMS: 10 * 24 * 60 * 60 * 1000, // 10 days
  fees: [
    {
    tokenAddress: "0x0000000000000000000000000000000000000000",
    tokenName: "ETH",
    feeAmount: parseEther("0.001")
    },
    {
    tokenAddress: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    tokenName: "USDC",
    feeAmount: "10000000000"
    }],
  metadataUri: "http://metadata.uri",
});

Solidity

Creates a new dispute resolver

IBosonAccountHandler bosonProtocol = IBosonAccountHandler(_bosonProtocolAddress);

BosonTypes.DisputeResolver memory disputeResolver = BosonTypes.DisputeResolver({
    id: 0, // will be ignored and auto-assigned
    escalationResponsePeriod: 604800, // 1 week in seconds
    assistant: assistantAddress,
    admin: adminAddress,
    clerk: address(0), // deprecated, always zero
    treasury: payable(treasuryAddress),
    metadataUri: "https://ipfs.io/ipfs/dispute-resolver-metadata",
    active: true
});

// Define supported token fees
BosonTypes.DisputeResolverFee[] memory disputeResolverFees = new BosonTypes.DisputeResolverFee[](2);
disputeResolverFees[0] = BosonTypes.DisputeResolverFee({
    tokenAddress: address(0), // native token
    tokenName: "ETH",
    feeAmount: 1e17 // 0.1 ETH
});
disputeResolverFees[1] = BosonTypes.DisputeResolverFee({
    tokenAddress: usdcTokenAddress,
    tokenName: "USDC", 
    feeAmount: 50e6 // 50 USDC (6 decimals)
});

// Define allowed sellers (empty array means no restrictions)
uint256[] memory sellerAllowList = new uint256[](0);

bosonProtocol.createDisputeResolver(disputeResolver, disputeResolverFees, sellerAllowList);

Last updated