diff --git a/src/predict_sdk/order_builder.py b/src/predict_sdk/order_builder.py index df5f1eb..dc73e3b 100644 --- a/src/predict_sdk/order_builder.py +++ b/src/predict_sdk/order_builder.py @@ -541,7 +541,7 @@ def build_order( raise MissingSignerError() return Order( - salt=str(data.salt or self._generate_salt()), + salt=str(data.salt if data.salt is not None else self._generate_salt()), maker=effective_maker, signer=effective_signer, taker=data.taker or ZERO_ADDRESS, diff --git a/tests/test_order_builder.py b/tests/test_order_builder.py index 63f6515..795696d 100644 --- a/tests/test_order_builder.py +++ b/tests/test_order_builder.py @@ -94,6 +94,22 @@ def test_build_order_with_custom_salt(self, builder_with_signer: OrderBuilder): assert order.salt == "123456789" + def test_build_order_with_zero_salt(self, builder_with_signer: OrderBuilder): + """Preserve an explicitly provided zero salt.""" + order = builder_with_signer.build_order( + "LIMIT", + BuildOrderInput( + side=Side.BUY, + token_id="12345", + maker_amount="1000000000000000000", + taker_amount="2000000000000000000", + fee_rate_bps=100, + salt=0, + ), + ) + + assert order.salt == "0" + def test_build_order_with_expiration(self, builder_with_signer: OrderBuilder): """Build order with custom expiration.""" future_date = datetime(2100, 1, 1, tzinfo=timezone.utc)