-
Notifications
You must be signed in to change notification settings - Fork 5.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Forc deploy should support (and enhance the userflow while) using proxy contracts #6068
Labels
big
this task is hard and will take a while
enhancement
New feature or request
epic
An epic is a high-level master issue for large pieces of work.
forc-client
Everything related to the `forc-client` crate.
forc-deploy
Everything to do with forc-deploy
P: critical
Should be looked at before anything else
Comments
kayagokalp
added
enhancement
New feature or request
big
this task is hard and will take a while
P: critical
Should be looked at before anything else
forc-client
Everything related to the `forc-client` crate.
forc-deploy
Everything to do with forc-deploy
labels
May 28, 2024
sdankel
added
the
epic
An epic is a high-level master issue for large pieces of work.
label
Jun 4, 2024
Blocked on fuel-core 0.27 upgrade in sway |
Blocked on FuelLabs/fuels-rs#1396 |
kayagokalp
added a commit
that referenced
this issue
Aug 7, 2024
… `[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.
esdrubal
pushed a commit
that referenced
this issue
Aug 13, 2024
… `[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.
esdrubal
pushed a commit
that referenced
this issue
Aug 13, 2024
… `[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.
closed by #6069 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
big
this task is hard and will take a while
enhancement
New feature or request
epic
An epic is a high-level master issue for large pieces of work.
forc-client
Everything related to the `forc-client` crate.
forc-deploy
Everything to do with forc-deploy
P: critical
Should be looked at before anything else
We have an rfc: FuelLabs/sway-rfcs#39 that describes the desired behaviour. Basically we want forc-deploy to be aware of contracts with proxy contract requirements and support deploying a proxy contract automatically if it is enabled. If no proxy contract was already deployed for the contract we will deploy a new "default" proxy implementation. Otherwise we will update the already deployed proxy contract.
The text was updated successfully, but these errors were encountered: