Post
Share your knowledge.

Common Sui Blockchain Errors: Object Locking & Faucet Rate Limits
When developing or testing applications on the Sui blockchain, developers often run into two common issues:
- Object locking errors during transaction execution
- Rate-limited faucet requests when trying to obtain test tokens
This article explains both problems in detail and provides actionable solutions to help you avoid frustration during development.
1. Error: Objects Reserved for Another Transaction
🔍 What It Means
You may encounter an error like this:
JsonRpcError: Failed to sign transaction by a quorum of validators because one or more of its objects is reserved for another transaction.
This means one or more objects (e.g., gas coins or shared objects) involved in your transaction are currently locked by a previously submitted transaction — even if it hasn’t completed yet.
Sui uses optimistic concurrency control, which locks objects until a transaction is finalized or expires (~30–60 seconds). If multiple transactions attempt to use the same object before finalization, they will fail with this error.
How to Check If an Object Is Available
Use the sui_getObject
RPC method to inspect the object status:
curl --location --request POST 'https://fullnode.testnet.sui.io:443' \
--header 'Content-Type: application/json' \
--data-raw '{
"jsonrpc": "2.0",
"id": 1,
"method": "sui_getObject",
"params": ["<object_id>"]
}'
If the response contains "status": "Locked"
or "owner": "locked"
, wait before using the object again.
Best Practices to Avoid Object Locking Issues
-
Wait for Finalization Before Submitting New Transactions
Use
waitForTransaction
from the SDK:import { JsonRpcProvider } from '@mysten/sui.js'; const provider = new JsonRpcProvider('https://fullnode.testnet.sui.io:443'); await provider.waitForTransaction('<tx_digest>');
-
Use Multiple Gas Coins
To avoid contention, split your gas coin:
sui client split-coin --coin-id <gas_coin_id> --amounts <amt1> <amt2>
Then use a different gas coin for each transaction.
-
Retry with Exponential Backoff
When encountering lock errors, retry after increasing delays (e.g., 1s, 2s, 4s).
-
Monitor via Explorer
Use Sui Explorer to track the status of the locking transaction by digest.
2. Error: 429 Too Many Requests – Faucet Rate Limiting
What It Means
When requesting test tokens from the Sui faucet, you may see:
API Error: 429 POST /v2/gas - “429 Too Many Requests”
This indicates that you’ve exceeded the rate limit — usually due to too many requests from the same IP address or account within a 24-hour window.
Solutions
Try Alternative Faucets
The official faucet (faucet.testnet.sui.io
) has strict limits. You can try alternative services:
These faucets often have more lenient policies or separate rate limits.
Reuse Test Accounts
Instead of creating new accounts every time, reuse existing ones to reduce faucet requests.
Run a Local Testnet
For heavy development/testing, consider running your own local Sui network:
sui start --local-rpc-address
This gives you full control over gas and avoids external dependencies.
- Sui
- Transaction Processing
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
- Why does BCS require exact field order for deserialization when Move structs have named fields?53
- Multiple Source Verification Errors" in Sui Move Module Publications - Automated Error Resolution42
- Sui Transaction Failing: Objects Reserved for Another Transaction24
- How do ability constraints interact with dynamic fields in heterogeneous collections?04