BRUH!!!!! I learned more from your crew than hundreds of tutorial videos!!! I thought I was going crazy trying to figure out the proxy feature then I watched this video! THANK YOU FOR THE THEORY - IT PROVIDED SO MUCH VALUE!!!
What if you use a Clones factory to deploy the upgradeable ERC20 contract? Will UUPS still be enabled on that deployed ERC20Upgradeable contract even though I didn't use the {kind: 'UUPS'} option when using the deployProxy helper?
Why should transparent proxy check for admin privs on every call? If we place upgradeTo function on proxy, we have to check privs on this function call only. And we can forward all other function calls to implementation without check. So the only problem is that implementation can't have function named upgradeTo.
I am just learning this so this is a guess - I think the actual reason might be that the transparent proxy doesn't check for admin privs, but needs to check if the function being called is defined before using the fallback and delegating. If the only function in the proxy is the fallback I guess this check is cheaper.
With UUPS does the proxy itself half to redundantly inherit most of the admin / upgrade features now passed to the implementation, or does it suffice to just include the simple fallback (and impl slot)?
So if I were wanting to add a proxy to Mars V1 before you upgraded into V2 would I have to deploy the proxy first and then change the ownership of Mars V1 to the proxy using the ownable package? From there all other forms of interacting with Mars Vx would be through the proxy as it would inherit the functions of Mars Vx or would the proxy have its own separate set of functions set up to give it that interaction ?
Great video. I love the openzeppelin libraries. Im learning solidity for a couple of month now and im still having problems understanding when reading from storage costs gas? I build a web3 dapp and im reading state variables constantly and it doesnt cost eth. Also i deployed some training contracts via remix and reading never costs gas. But i saw some other videos on omptimzing gas cost and the example was for reading state variables. So maybe some one can clarify this topic for me.
if your function alters the state, calling other functions taht only read the state (view) or that only operates over its parameters (pure), cost gas, the gas is billed based on the amount of code that is executed in functions that alter state I hope I was clear enough, explaining is not my best skill jajaja
it doesnt cost eth if you ONLY read smart contracts (without triggering a transaction), however if you create a transaction, every read (and write) that happens as PART OF that transaction will cost gas.
Could you change the variable storage via assembly and place it in the next storage slot, probably not ideal and easier to just not change the storage slots? But curious.
BRUH!!!!! I learned more from your crew than hundreds of tutorial videos!!! I thought I was going crazy trying to figure out the proxy feature then I watched this video! THANK YOU FOR THE THEORY - IT PROVIDED SO MUCH VALUE!!!
word!
beast of beasts, the one and only frangio.
Amazing content as always. Used the UUPS pattern to upgrade contracts and it's great to have the implementations verified on Etherscan..
Came here for the theory, it was what made it all clicked. Thanks.
This was really good y'all. Thanks for the insight.
Great video thanks Francisco!
What if you use a Clones factory to deploy the upgradeable ERC20 contract? Will UUPS still be enabled on that deployed ERC20Upgradeable contract even though I didn't use the {kind: 'UUPS'} option when using the deployProxy helper?
It was fantastic , thank you!
Does it work for BSC token too?
Great job explaining a complicated setup. Only person so far i have come across that was able to explain this well. Thanks!
_authorizeUpgrade() is internal function. So there should be corresponding public or external function which calls _authorizeUpgrade ?
Great video
Why should transparent proxy check for admin privs on every call? If we place upgradeTo function on proxy, we have to check privs on this function call only. And we can forward all other function calls to implementation without check. So the only problem is that implementation can't have function named upgradeTo.
I am just learning this so this is a guess - I think the actual reason might be that the transparent proxy doesn't check for admin privs, but needs to check if the function being called is defined before using the fallback and delegating. If the only function in the proxy is the fallback I guess this check is cheaper.
Amazing! Thx a ton!
Wonderful video
With UUPS does the proxy itself half to redundantly inherit most of the admin / upgrade features now passed to the implementation, or does it suffice to just include the simple fallback (and impl slot)?
Is there no scaffolding for this project?
Hey, can you share the slides?
So if I were wanting to add a proxy to Mars V1 before you upgraded into V2 would I have to deploy the proxy first and then change the ownership of Mars V1 to the proxy using the ownable package? From there all other forms of interacting with Mars Vx would be through the proxy as it would inherit the functions of Mars Vx or would the proxy have its own separate set of functions set up to give it that interaction ?
thank you for sharing
This is amazing..! I love this video, content and the author.!! 🥰 ❣ 💓 ❥ 💑 💜
where can i find this code?
brilliant
i want have your source code, please
37:56
Awesome
wow
the question now is how to remove the uups to have the final inmutable contract
hey please share your editor setup, it looks so clean and elegant
How do you do this in remix?
How can I use paymentsplitterUpgradeable?
Could you show me?
May i know is __UUPSUpgradeable_init() required in smart contract initialize()?
Great video. I love the openzeppelin libraries. Im learning solidity for a couple of month now and im still having problems understanding when reading from storage costs gas? I build a web3 dapp and im reading state variables constantly and it doesnt cost eth. Also i deployed some training contracts via remix and reading never costs gas. But i saw some other videos on omptimzing gas cost and the example was for reading state variables. So maybe some one can clarify this topic for me.
if your function alters the state, calling other functions taht only read the state (view) or that only operates over its parameters (pure), cost gas, the gas is billed based on the amount of code that is executed in functions that alter state
I hope I was clear enough, explaining is not my best skill jajaja
it doesnt cost eth if you ONLY read smart contracts (without triggering a transaction), however if you create a transaction, every read (and write) that happens as PART OF that transaction will cost gas.
Could you change the variable storage via assembly and place it in the next storage slot, probably not ideal and easier to just not change the storage slots? But curious.
Great tutorial, but how to verify the contract on etherscan?
Awesome, thank you!
You are the best. Regards
Awesome