W Chain security record

Ethereumw-chain.com

As of 3 Nov 2026, W Chain has 4 audit reports by 1 security firm on Trustblock; the latest is by QuillAudits, dated 25 Dec 2024. Those reports list no open critical findings.

Critical findings
No open critical findings
Across 4 reports.
Open the latest report
Your label, live
Get the label for your site

Record last updated . It holds audits, findings and contracts up to Nov 2026, and incidents up to Oct 2026. Trustblock does not review code.

Audits4

Newest first

AuditSecurity firmDateScopeCritical findingsReport
W Coin Migration Audit

Audit · firm’s term: audit

Security firm: QuillAuditsDate: Scope: Files named in the reportNo open critical findingsOpen · quillaudits.com
W Chain BridgeSecurity firm: QuillAuditsDate: Scope: Files named in the reportNo open critical findingsOpen · quillaudits.com
W Chain StakingSecurity firm: QuillAuditsDate: Scope: Files named in the reportNo open critical findingsOpen · quillaudits.com
W ChainSecurity firm: QuillAuditsDate: Scope: Not recorded (see the report)No open critical findingsOpen · quillaudits.com

Findings17

Statuses are the security firm’s own, from each report.

SeverityOpenAcknowledgedFixed
Critical000
High002
Medium001
Low509
HighSigner security can be less than expectedW Chain Bridge · QuillAudits · 13 Dec 2024Fixed

The claim function checks that the length of the _v array is greater than two-thirds the signers present. With 4 signers it is expected that _v is ( * 4) which yields 2.667 but Solidity rounds down from 2.667 to 2 thereby reducing the effectiveness of the check for signers by 1 signer.

Open the report
HighUsers can invoke the claim function with same signature in the v,r,s array to bypass the required signers ratioW Chain Bridge · QuillAudits · 13 Dec 2024Fixed

When claiming, the valid_count variable is incremented if the signer is true in the is_signer mapping. Users can exploit this by providing an array of v, r, and s that is populated with a single signer address vrs. Due to the absence of a check to validate that a signer signature has been checked before, the user can repeatedly use one signer address, populate the array to meet the signers ratio, and then claim their funds without appropriate checks. IfW Chain Bridge - Audit Report ww.quillaudits.com 08 w this happens, valid_count can be incremented any number of times till it exceeds the two- thirds of _signers security limit allowing the msg.sender to receive the amount.

Open the report
MediumRisk of DOS due to signer array becoming very largeW Coin Migration Audit · QuillAudits · 25 Dec 2024Fixed

The addSigner function contains a potential Denial of Service (DOS) vulnerability due to an unbounded array of signers. The function performs a linear search through the _signersarray to check for duplicates before adding a new signer. As the number of signers grows, the gas cost of this operation increases linearly, potentially making the function unusable if the array becomes too large.The issue is present in two locations:1. The addSigner function's duplicate check loop 2. The removeSigner function's search loop This could lead to: - Excessive gas consumption for signer management operations - Function calls potentially exceeding the block gas limit- Contract becoming unusable if too many signers are added

Open the report
LowCEI pattern is not followedW Coin Migration Audit · QuillAudits · 25 Dec 2024Fixed

The claim function violates the Checks-Effects-Interactions (CEI) pattern by performing an external call (transfer) before updating the contract's state variables. This creates a potential reentrancy vulnerability where an attacker could re-enter the contract before state changes are applied.

Open the report
LowImmutable chainId can be problematic in case of hard forkW Coin Migration Audit · QuillAudits · 25 Dec 2024Fixed

Using an immutable chainId in the contract poses a risk during network hard forks. When a network undergoes a hard fork, it can result in two separate chains with different chainIds. If the contract's chainId is immutable (hardcoded), the contract will continue to operate with the original chainId.

Open the report
LowUse call instead of transferW Coin Migration Audit · QuillAudits · 25 Dec 2024Fixed

The claim function uses the deprecated transfer() method to send ETH to users. Thetransfer() function forwards a fixed gas stipend of 2300 gas, which can cause the transaction to fail if the recipient is a smart contract with complex logic in its receive/fallback functions.

Open the report
LowAdopt the use of Event emission to ease querying data from the contractW Chain Bridge · QuillAudits · 13 Dec 2024Fixed

There are a couple of getter functions present in the contract which implies that the bridge relies on constantly querying data from the contract. However, blockchain bridges over time, relies on event emission and has a fast way to query data; it is cheaper and quicker to fetch on the client side. Emitting events for critical state changes is an appropriate way to track important transactions performed from the contract.

Open the report
LowContract ownership can transferred to the wrong ownerW Chain Bridge · QuillAudits · 13 Dec 2024Fixed

Access control is a critical part of smart contract security. Within this contract, access control is handled by the Ownable library which allows the owner to relinquish their rights to a new owner in one function call, transferOwnership(). This is risky if the new owner address passed in is malicious or is a victim of an address poisoning attack where some bytes of the address are changed when copied to the clipboard.

Open the report
LowEnumerableSet.AddressSet is more efficient than looping over arraysW Chain Bridge · QuillAudits · 13 Dec 2024Fixed

For adding and removing signers in WadzBridge, a for loop is used to add or remove addresses from the array - realistically, the array wouldn’t get large enough to be prohibitively expensive. In the current implementation, an array (_signers) and a mapping (is_signer) are used to determine the validity of addresses but the EnumerableSet provides a more efficient route to manipulate addresses in the same format.

Open the report
LowMissing check for chainsW Chain Bridge · QuillAudits · 13 Dec 2024Fixed

There currently is no check in the bridge and claim function that the chainId passed is not the parent chain. With the contract storing the claim data attached to the various chains, a user could pass in the same chainId for the _from_chain and _to_chain causing accounting errors.

Open the report
Show 2 more
LowUntitled findingW Chain Staking · QuillAudits · 18 Nov 2024Fixed

The report gives no description here.

Open the report
LowUntitled findingW Chain Staking · QuillAudits · 18 Nov 2024Fixed

The report gives no description here.

Open the report

Contracts

No deployed address is recorded for these audits.

The reports name a repository or files. Open a report to see its scope.

The repositories and files the reports name

Show this on your site

Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.

Content

Facts

Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.

Fixed as
Language

Style

Layout
Theme
Accent
Corners

Format

Size
Date
Embed as
HTML
<head>
<script src="https://widget.trustblock.run/project-widget.min.js" defer></script>
</head>
<body>
<div
data-tb-project-widget
data-tb-project-slug="w-chain-blockchain"
></div>
</body>

Paste the code where the label should appear. It uses no API credit and updates by itself.

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us