Skip to content

execution reverted: Sell failed authorization #1

Description

@kapuc92

Hello. Trying to execute, but getting error "Sell failed authorization"

What's wrong with my code?

const ethers = require("ethers");

const OracleOrder = [
  { name: 'order', type: 'Order' },
  { name: 'blockNumber', type: 'uint256' },
]
const Order = [
  { name: 'trader', type: 'address' },
  { name: 'side', type: 'uint8' },
  { name: 'matchingPolicy', type: 'address' },
  { name: 'collection', type: 'address' },
  { name: 'tokenId', type: 'uint256' },
  { name: 'amount', type: 'uint256' },
  { name: 'paymentToken', type: 'address' },
  { name: 'price', type: 'uint256' },
  { name: 'listingTime', type: 'uint256' },
  { name: 'expirationTime', type: 'uint256' },
  { name: 'fees', type: 'Fee[]' },
  { name: 'salt', type: 'uint256' },
  { name: 'extraParams', type: 'bytes' }
]
const Fee = [
  { name: 'rate', type: 'uint16' },
  { name: 'recipient', type: 'address' },
]
const domain = {
	name: 'Blur Exchange',
	version: '1.0',
	chainId: '1',
	verifyingContract: '0x000000000000ad05ccc4f10045630fb830b95127',
}

const execute = async () => {
	const node = new ethers.providers.JsonRpcProvider("https://rpc.ankr.com/eth");
	
	const listingTime = String((((Date.now() - 1000000) / 1000)).toFixed());
	const expirationTime = String(((Date.now() + 1000 * 60 * 60 * 24 * 3) / 1000).toFixed());
	const salt = "5287962905876209576"
	const block = await node.getBlockNumber();
	
	const sellOrder = {
		"trader":sellerAddress,
		"side":"1",
		"matchingPolicy":"0x00000000006411739DA1c40B106F8511de5D1FAC",
		"collection":"0xaC3748673eE62a248D859191a74FBf837A448FD3",
		"tokenId":"2",
		"amount":"1",
		"paymentToken":"0x0000000000000000000000000000000000000000",
		"price":"1000000000000000",
		"listingTime":listingTime,
		"expirationTime":expirationTime,
		"fees":[{
			"rate":"10000",
			"recipient":buyerAddress
			}],
		"salt":salt,
		"extraParams":"0x"
		}
	
	sell_signature = await sellerSigner._signTypedData(domain, {Order, Fee}, sellOrder);
	sell_signature = await ethers.utils.splitSignature(sell_signature);
	
	const buyOrder = {
		"trader":buyerAddress,
		"side":"0","matchingPolicy":"0x00000000006411739DA1c40B106F8511de5D1FAC",
		"collection":"0xaC3748673eE62a248D859191a74FBf837A448FD3",
		"tokenId":"2",
		"amount":"1",
		"paymentToken":"0x0000000000000000000000000000000000000000",
		"price":"1000000000000000",
		"listingTime":listingTime,
		"expirationTime":expirationTime,
		"fees":[],
		"salt":salt,
		"extraParams":"0x"
		}
	
	const sell = {
		"order": sellOrder,
		"v": sell_signature.v,
		"r": sell_signature.r,
		"s": sell_signature.s,
		"extraSignature": "0x",
		"signatureVersion": "0",
		"blockNumber": block
		}
	const buy = {
		"order": buyOrder,
		"v": 0,
		"r": "0x0000000000000000000000000000000000000000000000000000000000000000",
		"s": "0x0000000000000000000000000000000000000000000000000000000000000000",
		"extraSignature": "0x",
		"signatureVersion": "0",
		"blockNumber": block
		}
		console.log(JSON.stringify(sell))
		console.log(JSON.stringify(buy))
	const contract = new ethers.Contract("0x000000000000ad05ccc4f10045630fb830b95127", Blur_ABI, buyerSigner);
	const transaction = await contract.execute(
		sell, buy
	)
	console.log(transaction);
}
execute()

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions