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) 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 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