wishes to get promoted
2d 1hr ago
0

Argument-0001: Promotion to Rank I

Report Date 2026/05/15
Submitted by Nathaniel Bajo

Member details

  • Candidate: Nathaniel Bajo
  • Matrix: @nathanielbajo:matrix.org
  • Address: 1HXh7kCk2Z9Er4TpqF7TPX6ivSnJTECesp44RP7jnP7RCeL
  • Current rank: Candidate (Dan 0)
  • Wish: Promotion to Rank I
  • Induction: 2026/03/12 (extrinsic)
  • Reporting period: 2025/02/01 – 2026/05/15
  • Areas: FRAME / Runtime · XCM · Node & RPC infrastructure · JSON-RPC interface · Release engineering

Argument

Hi everyone, I'm Nathaniel Bajo. I'm a full-stack Rust engineer with a background in embedded systems, permissionless architectures, and web security. Outside of my contributions to the Polkadot SDK and the fellowship runtimes, I build personal projects on Polkadot infrastructure, including ink!-based smart contracts and tooling that exercises the runtime, XCM, and JSON-RPC surfaces of the SDK. My contributions during this reporting period span the runtime (FRAME pallets and runtime APIs), the XCM layer, node-level RPC infrastructure, the JSON-RPC specification, and the fellowship runtimes' release engineering.

Below are my most relevant contributions for this period:

1. Cross-Chain (XCM)

  • Generic account converter for external ecosystems (#7313, merged): Added ExternalConsensusLocationsConverterFor, a unifying converter that handles external global-consensus locations (and their child locations) while remaining backward-compatible with GlobalConsensusParachainConvertsFor and EthereumLocationsConverterFor. Reduces duplication across XCM configurations for bridged/external ecosystems.

2. Node & RPC Infrastructure

  • pallet-revive-eth-rpc: SubstrateClientT trait + Asset Hub embedded RPC (#11297, open): Scoped this work myself by opening the tracking issue #11221. The PR integrates pallet-revive's ETH RPC server directly into the Asset Hub Omni node and introduces a SubstrateClientT abstraction so EthRpcServerImpl is generic over its backend, with a new NativeSubstrateClient providing an in-process path (no subxt dependency on the hot path) while preserving the SubxtClient path for the standalone binary. Registered behind an opt-in revive-rpc feature in polkadot-omni-node-lib. Removal of the standalone revive-dev-node binary will be done in a follow-up PR.
  • Fix inconsistent BABE fork-choice via shared block-weight storage (#7550, open): Introduces SharedBlockWeightStorage, a thread-safe in-memory cache that makes block weights immediately visible across concurrent import operations, addressing a fork-choice consistency issue that surfaces under parallel imports.
  • archive_unstable_transactionReceipt (json-rpc-interface-spec #182, open): Identified the gap and opened the spec issue #181 myself. The PR specifies a stateless RPC method for transaction-receipt lookup that lets light clients locate transactions without downloading full blocks. Targets the JSON-RPC v2 spec used by light clients across the ecosystem.
  • pallet-revive: short-circuit eth_estimate_gas for simple ETH transfers (#11890, open): Opened the issue #11888 myself. Skips the binary-search of dry-runs and returns the fixed 21,000 gas cost when eth_estimate_gas is called for an EOA-to-EOA value transfer with empty calldata and no access list, EIP-7702 authorization list, EIP-4844 blob payload, or state overrides, matching Ethereum client behaviour and avoiding needless work on the hot path.
  • pallet-revive eth-rpc: map EthRpcError to EIP-1474 error codes (#11887, open): Opened the issue #11886 myself. Maps EthRpcError::ConversionError to -32602 (invalid params) and the remaining execution-time variants (RlpError, InvalidSignature, AccountNotFound, InvalidTransaction, TransactionTypeNotSupported) to -32000, matching Geth and Nethermind instead of collapsing every non-ClientError to a blanket -32600 Invalid Request, improving Ethereum tooling compatibility.

3. Release Engineering & Maintenance (Fellowship Runtimes)

4. Runtime APIs & Pallet Governance (FRAME)

  • Add ProxyApi runtime API to the Proxy pallet (#7320, merged): Introduced a runtime API exposing check_permissions (does a RuntimeCall pass a ProxyType's InstanceFilter?) and is_superset (does one ProxyType strictly contain another?), enabling off-chain clients and wallets to verify proxy call permissions and proxy-type hierarchies without re-implementing filter logic.
  • paras: add freeze/unfreeze parachain functionality (#11106, open): Implements root-only extrinsics that fully halt a parachain (no block production, no relay-chain messaging) until explicitly unfrozen, giving governance a precise circuit-breaker for misbehaving paras.
  • pallet-broker: extrinsic to reset base price (#7293, open): Adds an administrative extrinsic that lets governance/sudo reset the minimum/base price for coretime sales without a runtime upgrade, part of the broader coretime admin tooling.
  • pallet-bounty: dust_bounty_acc to sweep stranded funds (#11045, open): Adds a permissionless extrinsic that sweeps any remaining native tokens and fungible assets from a stale (closed) bounty account back to the treasury, removing a class of stranded balances that previously required manual intervention.
  • frame-support: on_pallet_initialize hook (#11746, open): Adds a new on_pallet_initialize() hook to the Hooks trait, giving pallets a single, ergonomic place to run one-time initialization both at genesis and when added post-genesis. Wires the hook into genesis execution and runtime-upgrade flows before any on_runtime_upgrade logic runs, with a default no-op for backward compatibility, eliminating the common anti-pattern of (mis)using migrations for first-time setup.

5. Issue Discovery & Project Hygiene (polkadot-sdk and json-rpc-interface-spec)

Beyond direct code contributions, I actively identify and document gaps, edge cases, and improvements across the ecosystem to guide future work and lower the contribution barrier. This reporting period, I have opened numerous issues, particularly around pallet-revive and JSON-RPC infrastructure, many of which are now being implemented by myself.

Some of the currently open issues I authored can be found here:

Summary

I'm genuinely passionate about building on Polkadot and want to keep deepening my contributions across the entire ecosystem. I'd like to continue this work at Rank I and take on more review responsibility.

Other ongoing contributions can be tracked via my open PRs on polkadot-sdk: is:pr is:open author:Nathy-bajo.

Reply
Up
Share
#545·
Comments