Web3.py: connecting Python devs to Ethereum

  • Total Funds Received from Octant so far: 53.1 ETH
  • Funds Spent: 53.1 ETH
  • Detailed Utilization: The web3.py team maintains about a dozen open-source Ethereum Python libraries (e.g., web3py, eth-account, py-evm, eth-utils) and creates educational resources to promote the adoption of those tools. All funds received are distributed to the five full-time developers on the team.

Milestones and Deliverables

Recently updated team goals include: Aiding EIP implementation and testing, Reducing UX friction, and Educating and inspiring builders. Broadly, our priorities are tasks that are in service of those goals.

  • Milestone 1: Aiding EIP implementation and testing
    • Description: Following a team retreat earlier this year, we identified that the biggest opportunity for us to make a meaningful impact in the ecosystem was to aid the EELS (execution specs) team in their pursuit of simplifying EIP implementation and testing.
      • Research spike: Can eth-tester support EELS as a new back-end?
    • Immediate Outcome:
      • After much rabbit-holing, an experimental EELS back-end exists and passes the web3.py test suite. Polish and performance benchmarks remain.
  • Milestone 2: Reducing UX friction
    • Description:
      • Spike: What private utilities within web3.py (and eth-utils) are useful and stable enough to expose publicly?
    • Immediate Outcome:
      • eth-utils received a major investment, exposing many previously private utilities and authoring a couple new ones. All methods are available within web3py, making life easier whenever needing to parse names, values, types, or function signatures from an ABI.
      • Improved type support across many of our libraries. The common denominator, eth-typing, just had its stable v5 release.
  • Milestone 3: Educate and inspire builders
    • Description:
      • Overarching goal is to build an “Ethereum Python Speedrun” workshop for Devcon, designed to help Python devs go from zero to hackathon participant.
    • Immediate Outcome:
      A couple of web3py-powered open source Python tools built in service of that goal:
      • sneko - a clickable terminal application for compiling Vyper and Solidity contracts
      • popupfaucet - an easy and reliable way for workshop hosts to offer testnet ether to attendees
  • Karma Gap: https://gap.karmahq.xyz/project/web3py

Challenges

  • Previous Challenges:
    • Description: In general, prioritization. The industry moves fast and we try to balance bug reports, feature requests, network upgrades, research spikes, maintenance and moonshots. It’s not always obvious what should be next.
    • Updates: During a team retreat, we brought in some additional ecosystem contributors to pick their brains about what they see as most important for the ecosystem and where we could step up.
    • Resolution: It’ll always be a balancing act. We’ve identified some team goals to serve as North Stars, making it easier to evaluate whether a particular task is aligned with them. Another resolution was to explore how we could ease or accelerate the process of implementing and testing EIPs, resulting in the EELS collaboration.
    • Lessons Learned: Its critical to regularly ask diverse ecosystem participants for their read on gaps and opportunities within Ethereum’s tooling and coordination layers. In short, stay connected, and find ways to routinely step back to view the wider picture.

Outputs and Outcomes

Outputs (Last Epoch):

  • Output 1: Aiding EIP implementation and testing
    • An experimental EELS back-end built and passing the web3.py test suite.
    • Short-term Outcome: EELS team excited to collaborate and figure out next value-add for plugging the EELS back-end into web3py tooling, accelerate EIP implementation, and increase stakeholder confidence in changes to the network via improved testing.
  • Output 2: Reduce UX Friction
    • major improvements to ABI utilities
    • lib releases:
      • 3 web3.py v6
      • 3 web3.py v7 (stable release set for 8/21)
      • 1 eth-account
      • 2 eth-utils
      • 7 eth-typing
    • Short-term Outcome: We’ve added 12 public utility methods for working with ABIs. While any metrics would be hand-wavy for this, we expect fewer ABI-related headaches reported in Discord and GitHub.
  • Output 3: Educate and inspire builders
    • A couple open-source Python repos, eventually supporting a Ethereum Python Speedrun workshop:
    • sneko v1 - a clickable terminal application for compiling Vyper and Solidity contracts
    • popupfaucet v1 - an easy and reliable way for workshop hosts to offer testnet ether to attendees
    • Short-term Outcome: sneko included in Week In Ethereum, popupfaucet awarded 3rd place in Optimism’s “Just Improve It” category of the Superhack hackathon. Some buzz on socials.

Long-term Outcomes:

  • A vastly more reliable and performant set of Python libraries over a steady set of releases, culminating in a stable web3py v7 release!
  • While the PyPI downloads were regularly trending up, we’ve seen a …surprisingly large uptick over the last Epoch. For example:
  • Traffic to the docs is down slightly month-to-month (13k visitors in July, down from 17k in March).
  • No recent submissions of our feedback form on the docs.

Plans for Potential Funds Raised in the Next Octant Allocation Window

  • Goal 1: Aiding EIP implementation and testing
    • Description: 1) Research spike: coordinate with EELS team on reducing friction for the execution specs behaving as a dependency to other libraries. 2) Implement the EELS back-end, accessible via eth-tester.
    • Expected Outcome: An EELS back-end enables EIP authors and researchers to gain significantly more confidence in their EIPs by testing against a mature Ethereum JSON-RPC test suite.
  • Goal 2: Reduce UX friction
    • Description: Introduce utilities for common contract and encoding/decoding use cases.
    • Expected Outcome: Similar to the ABI utilities, this effort intends to smooth out common headaches (e.g., subscribing to logs for a contract event) in these additional domains by exposing stable private utilities and/or adding new ones.
  • Goal 3: Educate and inspire builders
    • Description: Build and deliver an Ethereum Python workshop designed to take Python developers from from zero Ethereum experience to hackathon participant.
    • Expected Outcome: Empowering newcomers in the Python ecosystem and getting a better handle on their sticking points. Learnings can be used to update resources to smooth out rough edges and keep the flywheel going.

Other Funding

  • Grant Funding Received Since the Last Epoch: None
  • Other Non-Grant Funding Sources: EF salaries

Future Plans for Financial Sustainability

The web3.py team still has no plan to monetize its tools, create a token, or sell services. The team relies on the Ethereum Foundation for funding today, but that is not guaranteed in perpetuity. We see initiatives like Octant as integral to the long-term sustainability of these Python libraries and are grateful for your support of our work.

2 Likes