You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Here is my feedback regarding the forc-deploy experience.
High Level
Wallet Communication:forc-deploy should have better communication with existing wallets, the current experience is horrible and complicated to use (where developers have to copy and paste things like salts, addresses and keys), this should never be the case with production CLI tooling. If no wallet is available, forc-deploy should offer to run forc wallet new, then forc sign, as well as as should check the balance of the deploying account and if no funds recommend the faucet.
Artifacts:forc-deploy should produce deployment artifacts, once I deploy a contract, it should give me a JSON or YAML or all the data from that deployment, things like transaction id, salt, network endpoint, chain id, contract id, deployment_size. The deployment information should be instance based, meaning, if I deploy a contract twice with all the same data (but maybe the salt or timestamp is different), it should have a higher order instance ID or log or store the historical deployments in a log of somekind. You don't want to lose the deployment data, especially if its an expensive deployment.
Simplified Defaults:forc-deploy should come with some nice defaults like:
--testnet which would always do “—target=beta-3” with the latest stable testnetwork
--random-salt should always be on by default unless a salt is specified
Should always produce an artifacts file in /out/ unless specified otherwise
Be more helpful: Overall the tool should be more helpful and accommodating for early developers, be explicit, we have to assume they don't know where things are and what is available. Forc deploy can offer a better experience.
Bech32: Data like contract ID's is not returned in proper hex formatting and does not provide Bech32 formatted addresses.
Current Experience (Deployment to Testnet)
[Two terminal windows required]
Setup project
Build your contracts
Run forc-deploy, have to look for and specify latest network and random salt
A request is sent for an address
A user has to switch windows to find / create their wallet and address
The address gets entered “Please provide the address of the wallet you are going to sign this transaction with:fuel1xgan7jk7srzptu2f96eshu9geh60dsaqpl5aafxn337myy0prp7q6l8z0s Transaction id to sign: b92b502060f072384e9ec0bab249adbd310daa857b0cc90f026425b3db9695e2 Please provide the signature:”
A salt is provided
A user has to copy and paste the salt into a pre-specified forc wallet account sign command in a separate window
The returned signature must be copied from the second window back to the first window
Then the deployment occurs, a contract ID is presented in non-hex prefixed, non bech32 address
The entire transaction may need to be repeated as no balance check was done, user may not have funds to start and will have to find and go to the faucet and repeat the sequence above.
Runs forc wallet account 0.. password entry, if they don't have an account recommend forc wallet new walk them through wallet creation, then walk then through fauceting funds
Checks balance of wallet on selected network, if not enough funds, state this provide options to resolve the issue [skip step if they have enough balance], prepare a faucet link for them. Not enough Ether for deployment, please faucet some funds by going to this link and following the steps: https://faucet-beta-3.fuel.network/?address=[their address] [Check balance and continue]
Then run the forc wallet 0 sign [the tx id for deployment] command for them [user enters password]
Contract deploying message stated
Contract deployed! Artifacts have been produced to this json file, /out/deployments.json.
Contract Counter Deployed!
Deployment artifacts can be found in`/out/deployments.json`
Network: beta-3.network...
URL: [link to beta-3 URL block explorer]
Contract ID: [insert contract ID in bech32 and hex]
Intuitions
The flow should be smooth, if they don't have a wallet, help them create one
Offer the manual flow as well, but make forc wallet the default
Check their balance, offer them a way to get Ether easily (they might not know where the faucet is, tell them and pre-fill the address)
Record the artifacts and let them know where they are so they can use them in their project.
Extra:
Further, the SDK should be able to pickup this standard deployments file and provide nice macros and tooling for use in other tools.
The text was updated successfully, but these errors were encountered:
Sounds great! Thanks for the detailed explanation, couple of the concerns listed here are open issues already but most of them are new so I'll try to collect them under this issue to better organize UX improvement effort.
Here is my feedback regarding the
forc-deploy
experience.High Level
forc-deploy
should have better communication with existing wallets, the current experience is horrible and complicated to use (where developers have to copy and paste things like salts, addresses and keys), this should never be the case with production CLI tooling. If no wallet is available,forc-deploy
should offer to runforc wallet new
, thenforc sign
, as well as as should check the balance of the deploying account and if no funds recommend the faucet.forc-deploy
should produce deployment artifacts, once I deploy a contract, it should give me a JSON or YAML or all the data from that deployment, things liketransaction id
,salt
,network endpoint
,chain id
,contract id
,deployment_size
. The deployment information should be instance based, meaning, if I deploy a contract twice with all the same data (but maybe the salt or timestamp is different), it should have a higher order instance ID or log or store the historical deployments in a log of somekind. You don't want to lose the deployment data, especially if its an expensive deployment.forc-deploy
should come with some nice defaults like:--testnet
which would always do “—target=beta-3” with the latest stable testnetwork--random-salt
should always be on by default unless a salt is specified/out/
unless specified otherwiseCurrent Experience (Deployment to Testnet)
[Two terminal windows required]
forc-deploy
, have to look for and specify latest network and random salt“Please provide the address of the wallet you are going to sign this transaction with:fuel1xgan7jk7srzptu2f96eshu9geh60dsaqpl5aafxn337myy0prp7q6l8z0s Transaction id to sign: b92b502060f072384e9ec0bab249adbd310daa857b0cc90f026425b3db9695e2 Please provide the signature:”
forc wallet account sign
command in a separate windowDesired Experience
[One terminal window required]
forc deploy --testnet
forc wallet account 0
.. password entry, if they don't have an account recommendforc wallet new
walk them through wallet creation, then walk then through fauceting fundsNot enough Ether for deployment, please faucet some funds by going to this link and following the steps: https://faucet-beta-3.fuel.network/?address=[their address] [Check balance and continue]
forc wallet 0 sign [the tx id for deployment]
command for them [user enters password]/out/deployments.json
.Intuitions
forc wallet
the defaultExtra:
Further, the SDK should be able to pickup this standard deployments file and provide nice macros and tooling for use in other tools.
The text was updated successfully, but these errors were encountered: