My Priorities: May 2023
Hello! It is Josh again from the Flow Smart Contract Engineering team. I want to give a brief update about what I’m working on with the community, the Flow Smart Contract Engineering team, and the Protocol team.
If this is your first time reading one of my posts, please check out earlier ones in the series to get some insight into Cadence development!
I’ll make a few posts soon that go into a little more detail about some of these topics, so stay tuned!
Also, we’re always looking for community members who want to contribute to our projects, so if you want to get involved, please find me (@joshua on the Flow discord) and I can help you get up to speed on some of these tasks!
Some things we’ve accomplished so far this year
I’ve been very focused on the protocol smart contracts recently, so a lot of the accomplishments that I had some part in are related to those.
Permissionless Access Node
In January, we introduced an upgrade to the Flow protocol to support anyone running an access node without any permissions from the Flow service account committee. Access nodes now have to stake 100 FLOW and are automatically added to the network through a random slot selection algorithm. The number of open slots are increased regularly, so anyone should have the opportunity to run a node if they wish.
Automatic Rewards
Just recently, the community did another upgrade to the protocol to so that it would pay rewards automatically every epoch instead of needing to be initiated by the service account committee. This involved some refactoring of the rewards calculations and payment process.
V2 Token Standards
We’ve made a lot of progress on defining the new Fungible Token and NFT standards as part of the Stable Cadence milestone. Some of the highlights:
- Fixing the metadata views circular dependency
- Standard events will be emitted by the standard interfaces
- Split out functionality for an NFT contract with multiple types into its own contract interface:
MultipleNFT
- Decided on some convenience methods to make the migration from namespaced IDs to UUIDs more smooth.
The standard upgrades are shaping up to be very useful and easier for developers to upgrade to be compatible with! Please take a look at the pull requests and give some reviews so we can make it as great as it can be!
- NFT: https://github.com/onflow/flow-nft/pull/126
- Fungible Token: https://github.com/onflow/flow-ft/pull/131
Cadence Linked Account Standard
I’ve mostly only reviewed proposals and PRs for this, but it might be the most impactful thing that the Flow community will do for mainstream adoption of Flow! This is the Cadence implementation of hybrid custody, the tool that the Flow community has been working on this year to create a smooth user experience while also allow users to retain full control of their assets!
Gio from the Flow team and Austin from Flowty have led this and are doing a fabulous job at defining the standards, anticipating developer and user needs, and soliciting feedback from the community.
They are still looking for feedback too, so please take a look at the current repo to get familiar with it.
My Priorities for the next few months
I’ll be continuing to support the initiatives like linked accounts and defi standards that the other members of my team and the community are working on, but the following list includes the main priorities that I’ll be dedicating most of my time to.
Epoch Smart Contracts — Performance and Slashing
As I described above, we’ve been making a lot of improvements to the protocol smart contracts recently. Now that we’ve finished automated rewards, the next big milestone will be adding stake slashing to the protocol.
Stake slashing is the mechanism that the protocol uses to punish nodes who misbehave. If a node tries to do something malicious, the other nodes who notice it automatically send a message to the smart contract. If the report is accurate, the offending node loses some of its staked FLOW. This is a vitally important step for the Flow network to take towards full decentralization and permissionless node operation.
Before the slashing works starts in earnest, there are various small improvements that I’ll be working on to improve the performance and cleanliness of the protocol smart contracts and their repo, such as introducing delegator staking minimums, splitting the payout transaction into batches, cleaning up the tests, and writing more documentation.
V2 Token Standards
We’re in the final stretch with the V2 token standards! There are still some open questions that now mostly relate to the migration process, but there are still a few about the core design, such as:
- How do we properly handle contracts that use UUID and contracts that don’t so there isn’t any confusion?
- Is a
transfer
method and interface worth including? - Can we make it easier for NFTs to know where they should be stored and can we have a standard collection that stores multiple NFT types?
- Can we make storing and querying a large amount of NFTs more efficient?
- How do we want to integrate restricted provider types? (objects that restrict the amount of tokens that can be withdrawn via a
Provider
capability)
We have semi regular community working groups to discuss these, so please comment on one of the FLIPs if you’d like to participate!
Technical Debt in the Smart Contract Repos
We’ve built up some debt in the smart contract repos over the years that I would like to iron out this year, such as the organization, formatting of transactions, test cleanliness, and more. I’m going to try to spend some time cleaning these up so they are easier to understand and use by community members from now on. These are also great ways to get involved if you are a community member that wants to make some contributions. Most of the tasks are very straightforward and don’t require much previous knowledge. You can check out the open issues in our repos to see if there are any that interest you.
- NFT Repo: https://github.com/onflow/flow-nft/issues
- FT Repo: https://github.com/onflow/flow-ft/issues
- Core Contracts: https://github.com/onflow/flow-core-contracts/issues
- NFT Storefront: https://github.com/onflow/nft-storefront/issues
Stable Cadence FLIPs
The Cadence team has already made an impressive amount of progress on the FLIPs for major upgrades to the language in preparation for the Stable Cadence Milestone. I’m mostly just doing reviews and participating in some discussions about the features, but they are all coming together nicely. They’re always looking for more feedback though, please check out all the open FLIPs to see what is coming.
Conclusion
That is pretty much it for my priorities! Of course, we will continue working with the community on various proposals, reviewing smart contracts, and reviewing FLIPs, but these are the main priorities for me in the near future.
Thanks for reading and you’ll hear from me again soon with some more Cadence content and updates!
Flow Website: https://flow.com/
Flow Discord: https://discord.gg/flow
Flow Developer Portal: https://developers.flow.com/
Flow Github: https://github.com/onflow/flow
See you next time! 👋