Skip to content

Commit 9c71618

Browse files
rickstaayondonfu
andcommitted
feat: extend auxData to 96 bytes
Allow 64–96 byte auxData to support additional on-chain metadata. Co-authored-by: Yondon Fu <yondon.fu@gmail.com>
1 parent d03671e commit 9c71618

2 files changed

Lines changed: 56 additions & 5 deletions

File tree

contracts/pm/mixins/MixinTicketProcessor.sol

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,10 @@ abstract contract MixinTicketProcessor is MixinContractRegistry, MTicketProcesso
7474
pure
7575
returns (uint256 creationRound, bytes32 creationRoundBlockHash)
7676
{
77-
require(_auxData.length == 64, "invalid length for ticket auxData: must be 64 bytes");
77+
require(
78+
_auxData.length >= 64 && _auxData.length <= 96,
79+
"invalid length for ticket auxData: must be between 64 and 96 bytes"
80+
);
7881

7982
// _auxData format:
8083
// Bytes [0:31] = creationRound

test/unit/TicketBroker.js

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -798,22 +798,70 @@ describe("TicketBroker", () => {
798798
).to.be.revertedWith("ticket sender is null address")
799799
})
800800

801-
it("reverts if ticket auxData != 64 bytes", async () => {
802-
const auxData = ethers.constants.HashZero
801+
it("reverts if ticket auxData length is less than 64 bytes", async () => {
802+
await expect(
803+
broker.redeemWinningTicket(
804+
createTicket({
805+
recipient,
806+
sender,
807+
auxData: ethers.constants.HashZero
808+
}),
809+
web3.utils.asciiToHex("sig"),
810+
5
811+
)
812+
).to.be.revertedWith(
813+
"invalid length for ticket auxData: must be between 64 and 96 bytes"
814+
)
815+
})
803816

817+
it("reverts if ticket auxData is greater than 96 bytes", async () => {
804818
await expect(
805819
broker.redeemWinningTicket(
806820
createTicket({
807821
recipient,
808822
sender,
809-
auxData
823+
auxData: ethers.utils.hexConcat([
824+
createAuxData(
825+
currentRound,
826+
DUMMY_TICKET_CREATION_ROUND_BLOCK_HASH
827+
),
828+
ethers.constants.HashZero,
829+
ethers.constants.HashZero
830+
])
810831
}),
811832
web3.utils.asciiToHex("sig"),
812833
5
813834
)
814835
).to.be.revertedWith(
815-
"invalid length for ticket auxData: must be 64 bytes"
836+
"invalid length for ticket auxData: must be between 64 and 96 bytes"
837+
)
838+
})
839+
840+
it("accepts 96-byte ticket auxData", async () => {
841+
await broker.fundDeposit({value: faceValue})
842+
843+
const auxData = ethers.utils.hexConcat([
844+
createAuxData(
845+
currentRound,
846+
DUMMY_TICKET_CREATION_ROUND_BLOCK_HASH
847+
),
848+
ethers.constants.HashZero
849+
])
850+
851+
const recipientRand = 5
852+
const faceValue = 1
853+
const ticket = createWinningTicket(
854+
recipient,
855+
sender,
856+
recipientRand,
857+
faceValue,
858+
auxData
816859
)
860+
const senderSig = await signMsg(getTicketHash(ticket), sender)
861+
862+
await expect(
863+
broker.redeemWinningTicket(ticket, senderSig, recipientRand)
864+
).to.not.be.reverted
817865
})
818866

819867
it("reverts if block hash for ticket creationRound is null", async () => {

0 commit comments

Comments
 (0)