Skip to content

Conversation

@ilikesymmetry
Copy link
Collaborator

@ilikesymmetry ilikesymmetry commented Sep 29, 2025

Read more context here

@linear
Copy link

linear bot commented Sep 29, 2025

ADS-1326 Change BuilderCodes transferability rules

Per insight from nick.prince, it would be preferable to Base Build if Builder Codes were default non-transferable. This would help mitigate risks on compliance, engineering, and secondary markets/farming.

However, there are still cases where transferability is desired. As a middle ground, the proposed mechanism is to introduce a new role, TRANSFER_AGENT_ROLE, which are the only entities allowed to initiate transfers. The _transfer function would be overridden to enforce that transfer/safeTransfer/transferFrom/safeTransferFrom all can only be called by a Transfer Agent. This can be done with a 1 line addition of _checkRole(TRANSFER_AGENT_ROLE, msg.sender).

This new role would NOT be able to unilaterally take assets from BuilderCode owners. Code owners would have to give approvals to Transfer Agents (most likely smart contracts) and then execute through them (enforcing any custom logic we need) to move their token. Things like transferring from a personal EOA to a team Safe would be an exception we would want some ability to offer.

Importantly, this middle ground would NOT require us to upgrade BuilderCodes to enable custom transfer logic. This gives us a safer/easier path to customizing transfer rules over time. Eventually we may consider a hard upgrade to BuilderCodes once we identify a clear and stable transferability ruleset.

@ilikesymmetry ilikesymmetry marked this pull request as ready for review September 29, 2025 07:17
/// @param to The to address
/// @param codeSeed The seed for generating the code
/// @param payoutAddress The payout address
function test_approveTransferAgentToTransferToken(address from, address to, uint256 codeSeed, address payoutAddress)
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Example of how we can add transferability rules modularly with new smart contracts.

@ilikesymmetry ilikesymmetry force-pushed the conner/ads-1326-change-buildercodes-transferability-rules branch from 34a8bc9 to 74385b8 Compare September 29, 2025 22:04
@ilikesymmetry ilikesymmetry merged commit 7034c62 into main Sep 29, 2025
7 checks passed
@ilikesymmetry ilikesymmetry deleted the conner/ads-1326-change-buildercodes-transferability-rules branch October 6, 2025 16:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants