-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: create and deploy a reference proxy contract for contracts with…
… `[proxy]` enabled (#6069) ## Description Part of #6068. This PR adds couple of things: 1. A default proxy contract implementation taken from [sway standards](https://github.com/FuelLabs/sway-standards/blob/master/standards/src/src14.sw). 2. Infra for creating, building and deploying the reference implementation for proxy contracts. 3. Deployment procedure such that proxy contract is deployed while working on a contract which enables the `[proxy]` in its forc.toml. In a way that it is owned by the deployer and the target initially points to implementation contract. 4. Infra for making a contract call into the already deployed proxy contracts to update their targets. 5. Adds a `Building` text to the all forc build invocations to better inform the user about what forc is doing behind the scenes. 6. Removes duplicate forc-wallet password prompts which was very frustrating for the users. Now forc-wallet deployment path only asks for password once. 7. Refactors around how secret_key is selected based on user input 8. Updated docs around forc-client 9. Docs around how to use the proxy feature ## How this works If the user does not have a proxy table in their forc.toml, nothing changes, same old deployment procedure is followed. Only difference is that this PR improves the ux by removing the need of providing the password multiple times. If the user has a contract with a proxy table but without an address like: ```TOML [project] authors = ["kaya"] entry = "main.sw" license = "Apache-2.0" name = "impl-contract" [dependencies] [proxy] enabled = true ``` Forc automatically creates a proxy contract based on the reference implementation at [SRC14](https://github.com/FuelLabs/sway-standard-implementations/tree/61fd4ad8f69d21cec0d5cd8135bdc4495e0c125c). Sets its target to the implementation contract, whichever contract enabled the proxy and the owner to the deployer (signing account of the transaction). If the user has a contract with a proxy table and an address specified like: ```TOML [project] authors = ["kaya"] entry = "main.sw" license = "Apache-2.0" name = "impl-contract" [dependencies] [proxy] enabled = true address = "........." ``` Forc automatically makes a set target conract call to update the proxy contract's target. Pointing it to the newly deployed impl contract which defines the proxy table. Generated proxy contract abi and bins are stored at `~/.forc/.generated_proxy_contracts/project_name` for housekeeping.
- Loading branch information
1 parent
f623b52
commit 5d796fb
Showing
20 changed files
with
1,438 additions
and
83 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# Proxy Contract | ||
|
||
This folder contains pre-built version of the owned proxy contract, its abi and `storage-slots.json` file. | ||
|
||
*contract url*: [sway-standard-implementation/src-14/owned_proxy](https://github.com/FuelLabs/sway-standard-implementations/tree/61fd4ad8f69d21cec0d5cd8135bdc4495e0c125c). | ||
*commit hash*: `61fd4ad8f69d21cec0d5cd8135bdc4495e0c125c` | ||
*forc version*: `v0.62.0` | ||
*build command*: `forc build --release` |
Oops, something went wrong.