Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions content/solana-account-rent/en/solana-account-rent.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ pub struct Initialize {}
```
Again, note that the output of this program matches the output on the command line.

<iframe src="https://plgrnd.io/embed?theme=auto&ref=rareskills#flow=N4IgbiBcDMA0IDsD2ATApgZygbVASxShAGMBGEeAFwE8AHNIgYQHkBZVgUQDkAVCkWkgx5KeJAiigAHlAAM8alAC0pAOyyAvvBQBDSjskhKaKZSIAlNAkpKTaALa1KAAnt4EeewFd7zgGZIAE7OXM4ARtTGGAA6CLE8SLSQzpQAFmjOADZ4YBnmAAqMzjoIGADuaMEAFADmaJSs7p4+AEI6mSXEaABiQZbWHFIOTmIIAJQAdLEtSJSUSPbJaRkBgd4d-oELKenOxKk6TpWwzlWkAEwAHM4A1OGRmGPOAOvOcAAsl7JZOo5BlBgAPQRYxKahoHTBV7nZzgyEYKYIDgARQAqgBBAAye3SxAA1hgdmhqK49PsJs5GAcEHUiSFUawWhxzM4kH57lEJiANFp8IRICRzvwaPQmGxOLx+IJhKJxIYZJAlNBzvIQIpFaRNNo9AZIKBjKYiIAEwmKxGISC81mcwgAXhl3BzMNzeSACEQEOQqHQGAKuAymeYpUIRKN5XIFHItCBdPpDAgfGFKlBlTzYHz3fVhd6iFwODwAOrMcwAaSDMtDepACtV6oAnFrozq4-UykE8URWOiAJJcXN8VPpgWBT1GbMC8zcHgAfQ4AA0OKx8nx4NKQ3LKwroLIa8mGzHdcAB67+SRoFnRQKWOxJ2W1xIN8plTvIOct1H94YDWYBSb0YwWKivBTgAyjwRbogA4hwU7MAAasyAASHDogAIqcFzXCCjzOmmx7ukKXoXiAfqMsyt6yve0jhmqUDnO8e5NpW8b2ImgRQBhR5ugKOgjiKPogKhKHkRWVEvtuEZiQxsZ6pxJ7EO8578VeErLgIwYUWGkAXM+0Bvtq0n6iY34gB8Xw-H8gQAs49DBFhYIQlCzgwnCgRYLJ7pnoR-EkQGwnrqJKrPvRUkHogCZJpAABstaRZoLpcSA9i8WOICsKimI8F2+SYgAmn5lFVsmXwSecsXvoxh7xSeaDJURKIYpi+WabFz6kHpjYGe5ArEAArIpYrXpKK7qSJhWQF8rUquVBlGEZxrOAURRgO0XgZAAvGt-hBOsOgAPzOgAuvAaAoHUWCQLgeEClI1C2KdaBTlOHpKMxrFKIEeA1KkNjDkoGC0DoXRKJkaB+GY8AYBagRdO6I6Q140NoAhJQoCDsMveFgTvZ933CpCdTGcOeOBATyMIKj-G-f9gNoMDoNmFVRA3XddSPQg9QvS2bbY19P2kJzlCtoEeJ02D-Dw4jGbgyAEtdGTFNSwLQsix9vPEwTRBE1Q+P1PLaNDvz7OC9zINi4z123SdrNPecGMsZUPPfUoPHO6L0uy-xCAETLUNyyj+uILbr0O6ruPayTmbcbxOuUHr-EuzobvcrhCXM1bD1PYbmOOzYLthEnEO+57cNF3H6PB1jofS-oEfGTx6u6-78f8-npsMynJ5p-dj0u4EmBeJkP04zYSWu234tF0Q9eFwjfvkwHvf94POcN8ZSWr2XAqj4n4-m1Wlvd090B229VdKKPrf0xPs+e55Ps35viDHxXK-hxrW-R7Xj8X0ne9d9bv0OgWQBDnWw-Md5XxnpLA219EaP0Ab8QQlkMCvyMDHIgNUN5NwweA3+HcmYH2tqPPuGAB5D15mApQl8xZQJhh-WBc8FYf3ekvchYc0G1xwVg+e-EapUN-gdDQQA" title="Interactive: rent-exempt minimum" loading="lazy" sandbox="allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox" allow="clipboard-write" style="width:100%;aspect-ratio:16/9;border:0;border-radius:12px"></iframe>
Live version of the calculation above: the top branch asks a mainnet RPC node for the rent-exempt minimum of an account of the given size, the bottom branch computes (128 + bytes) × 3,480 × 2 with the constants from this chapter, and the EQUAL node confirms they match. Change the number of bytes. If the widget does not load, [open it in a new tab](https://plgrnd.io/?ref=rareskills#flow=N4IgbiBcDMA0IDsD2ATApgZygbVASxShAGMBGEeAFwE8AHNIgYQHkBZVgUQDkAVCkWkgx5KeJAiigAHlAAM8alAC0pAOyyAvvBQBDSjskhKaKZSIAlNAkpKTaALa1KAAnt4EeewFd7zgGZIAE7OXM4ARtTGGAA6CLE8SLSQzpQAFmjOADZ4YBnmAAqMzjoIGADuaMEAFADmaJSs7p4+AEI6mSXEaABiQZbWHFIOTmIIAJQAdLEtSJSUSPbJaRkBgd4d-oELKenOxKk6TpWwzlWkAEwAHM4A1OGRmGPOAOvOcAAsl7JZOo5BlBgAPQRYxKahoHTBV7nZzgyEYKYIDgARQAqgBBAAye3SxAA1hgdmhqK49PsJs5GAcEHUiSFUawWhxzM4kH57lEJiANFp8IRICRzvwaPQmGxOLx+IJhKJxIYZJAlNBzvIQIpFaRNNo9AZIKBjKYiIAEwmKxGISC81mcwgAXhl3BzMNzeSACEQEOQqHQGAKuAymeYpUIRKN5XIFHItCBdPpDAgfGFKlBlTzYHz3fVhd6iFwODwAOrMcwAaSDMtDepACtV6oAnFrozq4-UykE8URWOiAJJcXN8VPpgWBT1GbMC8zcHgAfQ4AA0OKx8nx4NKQ3LKwroLIa8mGzHdcAB67+SRoFnRQKWOxJ2W1xIN8plTvIOct1H94YDWYBSb0YwWKivBTgAyjwRbogA4hwU7MAAasyAASHDogAIqcFzXCCjzOmmx7ukKXoXiAfqMsyt6yve0jhmqUDnO8e5NpW8b2ImgRQBhR5ugKOgjiKPogKhKHkRWVEvtuEZiQxsZ6pxJ7EO8578VeErLgIwYUWGkAXM+0Bvtq0n6iY34gB8Xw-H8gQAs49DBFhYIQlCzgwnCgRYLJ7pnoR-EkQGwnrqJKrPvRUkHogCZJpAABstaRZoLpcSA9i8WOICsKimI8F2+SYgAmn5lFVsmXwSecsXvoxh7xSeaDJURKIYpi+WabFz6kHpjYGe5ArEAArIpYrXpKK7qSJhWQF8rUquVBlGEZxrOAURRgO0XgZAAvGt-hBOsOgAPzOgAuvAaAoHUWCQLgeEClI1C2KdaBTlOHpKMxrFKIEeA1KkNjDkoGC0DoXRKJkaB+GY8AYBagRdO6I6Q140NoAhJQoCDsMveFgTvZ933CpCdTGcOeOBATyMIKj-G-f9gNoMDoNmFVRA3XddSPQg9QvS2bbY19P2kJzlCtoEeJ02D-Dw4jGbgyAEtdGTFNSwLQsix9vPEwTRBE1Q+P1PLaNDvz7OC9zINi4z123SdrNPecGMsZUPPfUoPHO6L0uy-xCAETLUNyyj+uILbr0O6ruPayTmbcbxOuUHr-EuzobvcrhCXM1bD1PYbmOOzYLthEnEO+57cNF3H6PB1jofS-oEfGTx6u6-78f8-npsMynJ5p-dj0u4EmBeJkP04zYSWu234tF0Q9eFwjfvkwHvf94POcN8ZSWr2XAqj4n4-m1Wlvd090B229VdKKPrf0xPs+e55Ps35viDHxXK-hxrW-R7Xj8X0ne9d9bv0OgWQBDnWw-Md5XxnpLA219EaP0Ab8QQlkMCvyMDHIgNUN5NwweA3+HcmYH2tqPPuGAB5D15mApQl8xZQJhh-WBc8FYf3ekvchYc0G1xwVg+e-EapUN-gdDQQA).

## Comparing Storage costs to ETH
At the current time of writing, ETH has a value of about $2,425. Initializing a new account costs 22,100 gas, so we can calculate the gas cost of 32 bytes to be $0.80 assuming gas costs are 15 gwei.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,9 @@ We can see that this costs more compute units, almost double our first example.

**Regardless of the compute units consumed, the transaction charged 5000 lamports or 0.000005 SOL.**

<iframe src="https://plgrnd.io/embed?theme=auto&ref=rareskills#flow=N4IgbiBcDMA0IDsD2ATApgZygbVASxShAGMBGEeAFwE8AHNIgYQHkBZVgUQDkAVCkWkgx5KeJAiigAHlAAM8alAC0pAEyyAvvBQBDSjskhKaKZSIAhHRjQACSgCcdCDDuKjxNgGZpbAXhsIAK4AtgBGaPY2SJ42wgDmCHqB9pg2AOs2AKywsrk2ADY6wYL2lBgAdDaMSMWBxjaBCCIYNsTiGCFoKDYoSAFIlK0AFk5xtiI2ABSUQ7bEI7TG9gDkLYJ4CJQAlJWMIwhjdrM2XACqrOYcAEpRMfGJlMmY5SAaWviEkCSq-DT0TGxOLx+IJhO4JJBpMpoOoFMpSJptHoDJCjCYzF9AAmEsTwCSSKRaGyOtgcThcbjEEjesA+RAQ5CodAYXzOF2uIKEIkphhkkHkIEUfK0IF0+kMQTCESgpGptK+xGgvyZAPY3D48FBXPEPOhsIFUAAHIiRcjDMZTERsYVikhSmsIji8Y8Uq93iACHSfoz-izzpcrhywdzUbz+YKAJzG0Uo0AS8L2KCZXKaN0er7BBlGZVfVinAAyPAAkgAFPMATUDWohUMg6jDUAALJlhdHJLL3Z8QPlM39mSA8wBBVjF5hXHgAZQA+jxmJPx8w85XwTqYEa4ZAmy3TZD22mSA2lT6QCxVcCNZzlyGoAA2XLr6DNpFi1HmjEgbHecYIGzzxdvAC68BdGMWCQLgHZEFI1BKMBaCTpO9JKHGERKPYuJDJQSgZkoOhKPkaCeGY8AYEgyTEH29L8CRZFoAAEk4KD4XSpBISE8aoehRFGDo9hjG+Ga-DxfH0QgjF9thuH4YRrw0hBXxQTBKBjPBCCqKxkr2BxcQYVhLGhHhBFcdR9jkZ6VGkSZdEMUxXyqep7FodpXH6LxaD8T2QluSJYlENh+lSWYqadgpsHwdhBKBPkmGOTp3Z4UUJRlAZ0nERZpnppmxnkd5NkgOFmCRdFnGCa5b7diVwnWX2cXWolGDJYF-4aEAA" title="Interactive: transaction fee by signatures" loading="lazy" sandbox="allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox" allow="clipboard-write" style="width:100%;aspect-ratio:16/9;border:0;border-radius:12px"></iframe>
The fee in this chapter is a function of signatures only: change the number of signatures in the flow above and the fee moves in steps of 5,000 lamports. If the widget does not load, [open it in a new tab](https://plgrnd.io/?ref=rareskills#flow=N4IgbiBcDMA0IDsD2ATApgZygbVASxShAGMBGEeAFwE8AHNIgYQHkBZVgUQDkAVCkWkgx5KeJAiigAHlAAM8alAC0pAEyyAvvBQBDSjskhKaKZSIAhHRjQACSgCcdCDDuKjxNgGZpbAXhsIAK4AtgBGaPY2SJ42wgDmCHqB9pg2AOs2AKywsrk2ADY6wYL2lBgAdDaMSMWBxjaBCCIYNsTiGCFoKDYoSAFIlK0AFk5xtiI2ABSUQ7bEI7TG9gDkLYJ4CJQAlJWMIwhjdrM2XACqrOYcAEpRMfGJlMmY5SAaWviEkCSq-DT0TGxOLx+IJhO4JJBpMpoOoFMpSJptHoDJCjCYzF9AAmEsTwCSSKRaGyOtgcThcbjEEjesA+RAQ5CodAYXzOF2uIKEIkphhkkHkIEUfK0IF0+kMQTCESgpGptK+xGgvyZAPY3D48FBXPEPOhsIFUAAHIiRcjDMZTERsYVikhSmsIji8Y8Uq93iACHSfoz-izzpcrhywdzUbz+YKAJzG0Uo0AS8L2KCZXKaN0er7BBlGZVfVinAAyPAAkgAFPMATUDWohUMg6jDUAALJlhdHJLL3Z8QPlM39mSA8wBBVjF5hXHgAZQA+jxmJPx8w85XwTqYEa4ZAmy3TZD22mSA2lT6QCxVcCNZzlyGoAA2XLr6DNpFi1HmjEgbHecYIGzzxdvAC68BdGMWCQLgHZEFI1BKMBaCTpO9JKHGERKPYuJDJQSgZkoOhKPkaCeGY8AYEgyTEH29L8CRZFoAAEk4KD4XSpBISE8aoehRFGDo9hjG+Ga-DxfH0QgjF9thuH4YRrw0hBXxQTBKBjPBCCqKxkr2BxcQYVhLGhHhBFcdR9jkZ6VGkSZdEMUxXyqep7FodpXH6LxaD8T2QluSJYlENh+lSWYqadgpsHwdhBKBPkmGOTp3Z4UUJRlAZ0nERZpnppmxnkd5NkgOFmCRdFnGCa5b7diVwnWX2cXWolGDJYF-4aEAA).

Back to compute unit. So, why would we want to optimize compute units since it does not affect fees paid for transactions?
+ First, this is only true for now, in the future Solana might conclude to raise the limit to be higher and would have to incentivize nodes to not treat these complex transactions any different than simple ones. This would mean considering compute unit consumed when calculating transaction fees.
+ Second, a smaller transaction is more likely to be included in a block if there is significant network activity competing for blockspace.
Expand Down
3 changes: 3 additions & 0 deletions content/solana-pda/solana-pda.md
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,9 @@ The screenshot below shows the expected result:

After initialization, the owner of the keypair account changed from `111...111` to the deployed program. We have not yet covered the significance of account ownership or the system program (the address of all ones) in depth in our [Solana tutorials](https://www.rareskills.io/solana-tutorial) just yet. However, this should give you an idea of what "initialization" is doing and why the owner of the private key can no longer transfer SOL out of the account.

<iframe src="https://plgrnd.io/embed?theme=auto&ref=rareskills#flow=N4IgbiBcDMA0IDsD2ATApgZygbVASxShAGsBGEeAFwE8AHNIgaQFEBNABQEEBJAJQpC0kGPJTxIEUUAA8oABnjV5AX3goAhpXVTlq-IUggU5KnQaGAItwDK7ADKdWAoSLESpIWZABM3hSCVIAFoANjlVI01tSFBKNGlKIhBdWH0iShMQGnoiABVmAA1c52FRcUkYz3lFKFJScLUojziEojwEMvUAGzwALzQAAgBbagH1AGNxpABXBESUtMMMTOzzEGtuAHEAORLXco8vaAAOf0D6hsitHT0QAiIwFbMiADVmXm4AMVYAfQ2dzi5ACqvGYezK7kqXjCZ1qckuGmuMQWdwMIHGTxyhgAwgB5ACy+OY22K8BcEIqMigxz8NUgCKalRaiUMjDQdHUeAATmNJjM5gAdBBC7FctCaNAoAYzSgidADSgAC0GtC5SAA5lz1EMBgAzNU69R6sUYRUDYjs2icrkAOgGnAGqrwYAl5vZA3ieAwstgAwwSAGogwA0VSC66B543UCAG-22Y2GmAw6nVg2jUuj1AkgyjMbeH2+gcoAwA7qIzUqVdMAEY9cZu6h29gm4ObNAINBauJ6pA86NISs87M25K3e6GSjeASrPKFUmCUpuSlVel06B+CKI6KxeIskAAFhLdgQ0jAdhL6oKm1y+7Q23V0As+4ArCFGCFPtJ1KReHhxUCUHeWwAEVoAAdWYWhpheUdUlRdJoGnZ5DHyIpwSXQ5qgCKB93qTdGR3VpDFgxZBExNZ2AsTh0IOKEoBOWEYDCfCkWAFFxyMKdTCxEArFsBwnDJRdaKpSAYTXDdGlYrJdyITguWxaBqDAaQAEdvzA4gkGIahpkYPAXjAYDcgwVSAC11TMsBFW2Z9pGYIYSwAKWrY5pCGbYwN4Kd2LRFBEO4tY+PsRwaMhUTxOwyB90kq5txkoiQG8Z9nxI+DDHGLismQkA8UJYl53JDC6MgABOfdGPXBlpOZIhmw1LUdQjZ1JTGFAUBbIUhU4dqWwGABePV2hQerNW1HqOqTaxqAQcYAAoMDQSUMF9VUGu1QMUAASjtXJlQGcZFXUWg4h5aZFuDRbloGgZsAAXV9f0FX2q6pVQ3JA2DNAhhOxsBm2AMnRdbsLVGT1vWDQAUAgGZAlXadUDujAZq0GMsxSldpKADI04xh1A0DtXEEC6UZK0dNUxp1ER1QQYNdV7IsBjm9owG0tAfmpjttpHXQHpASVUywSBcHSzxqCCAX2Z+Mggig2s8HGNlxa5PB1UVSggmMIJ2igjWujQXVEngf1pi5cY1jIAQTbNtAAAl031ogZbluslaCFW1aNrJ1C5VM92Macfb9+2EBQR3DC1nXpj1g35jgjjpHFyWfml0hZZV4G0Ddj31aCZZ0+dCU3f1w2rZmG2ncya3zZDsOLbToGi-Zd3VfVwPfbQPdlnb4OHbWfPG7iYvY+SeO0UTiWUFTFOMiCZkW89vO06GJMUzQIIS696u1gyMvTZrvv0jT+ec69rQO67lYg872vw5AfOV4wZNUw3kex3HpOp6l2eT9bjXHiCI-Z+69N57wrhOKu5cD6hzvj-XcC825UGvnuR4Pcb6H0MAAoBa9X6l3fkQCeycOZp05poU269T5BAAaQyg5DcFbygf3SB+87YYPviQ1WCAyFigQWfZBDwr4X1vmsahnDuEgLfmPAhn9p6p1ljWV2zdKEAJdgrYepdjaMMrmA6BddK7yPlorJRf80EoMEb3GBIiG4KLUc3UB+DDCEK-jPbwc94GUNoA3CmjVuAoHoToneWVt7CPSK43+ntTFEE8aYkJhhPHp3WkMXx-iHFi0nrIyg0A3EJF4bLEhS0UAAGI5D+M0SwhCATYlZCyeExB3sL5RPMegyxjS84FOKSkqRjiZFS3ibQDQuSUCuKjjHDR98tFxOYTbKpfSBmn0iRHLK58LF6MWdrBAutOmkScbI+J1Zpg-UGVkkZpTxnlMmZUtheyDm0F4QsowAV6krLvv5dZmz7F3WUEAA" title="Interactive: PDA vs keypair account" loading="lazy" sandbox="allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox" allow="clipboard-write" style="width:100%;aspect-ratio:16/9;border:0;border-radius:12px"></iframe>
Interactive version of this chapter: the keypair account on the left has a private key, so it can sign a message and the signature verifies against its public key. The PDA on the right is derived from the program id above with empty seeds, and there is nothing to sign with. Edit the values or press Generate. If the widget does not load, [open it in a new tab](https://plgrnd.io/?ref=rareskills#flow=N4IgbiBcDMA0IDsD2ATApgZygbVASxShAGsBGEeAFwE8AHNIgaQFEBNABQEEBJAJQpC0kGPJTxIEUUAA8oABnjV5AX3goAhpXVTlq-IUggU5KnQaGAItwDK7ADKdWAoSLESpIWZABM3hSCVIAFoANjlVI01tSFBKNGlKIhBdWH0iShMQGnoiABVmAA1c52FRcUkYz3lFKFJScLUojziEojwEMvUAGzwALzQAAgBbagH1AGNxpABXBESUtMMMTOzzEGtuAHEAORLXco8vaAAOf0D6hsitHT0QAiIwFbMiADVmXm4AMVYAfQ2dzi5ACqvGYezK7kqXjCZ1qckuGmuMQWdwMIHGTxyhgAwgB5ACy+OY22K8BcEIqMigxz8NUgCKalRaiUMjDQdHUeAATmNJjM5gAdBBC7FctCaNAoAYzSgidADSgAC0GtC5SAA5lz1EMBgAzNU69R6sUYRUDYjs2icrkAOgGnAGqrwYAl5vZA3ieAwstgAwwSAGogwA0VSC66B543UCAG-22Y2GmAw6nVg2jUuj1AkgyjMbeH2+gcoAwA7qIzUqVdMAEY9cZu6h29gm4ObNAINBauJ6pA86NISs87M25K3e6GSjeASrPKFUmCUpuSlVel06B+CKI6KxeIskAAFhLdgQ0jAdhL6oKm1y+7Q23V0As+4ArCFGCFPtJ1KReHhxUCUHeWwAEVoAAdWYWhpheUdUlRdJoGnZ5DHyIpwSXQ5qgCKB93qTdGR3VpDFgxZBExNZ2AsTh0IOKEoBOWEYDCfCkWAFFxyMKdTCxEArFsBwnDJRdaKpSAYTXDdGlYrJdyITguWxaBqDAaQAEdvzA4gkGIahpkYPAXjAYDcgwVSAC11TMsBFW2Z9pGYIYSwAKWrY5pCGbYwN4Kd2LRFBEO4tY+PsRwaMhUTxOwyB90kq5txkoiQG8Z9nxI+DDHGLismQkA8UJYl53JDC6MgABOfdGPXBlpOZIhmw1LUdQjZ1JTGFAUBbIUhU4dqWwGABePV2hQerNW1HqOqTaxqAQcYAAoMDQSUMF9VUGu1QMUAASjtXJlQGcZFXUWg4h5aZFuDRbloGgZsAAXV9f0FX2q6pVQ3JA2DNAhhOxsBm2AMnRdbsLVGT1vWDQAUAgGZAlXadUDujAZq0GMsxSldpKADI04xh1A0DtXEEC6UZK0dNUxp1ER1QQYNdV7IsBjm9owG0tAfmpjttpHXQHpASVUywSBcHSzxqCCAX2Z+Mggig2s8HGNlxa5PB1UVSggmMIJ2igjWujQXVEngf1pi5cY1jIAQTbNtAAAl031ogZbluslaCFW1aNrJ1C5VM92Macfb9+2EBQR3DC1nXpj1g35jgjjpHFyWfml0hZZV4G0Ddj31aCZZ0+dCU3f1w2rZmG2ncya3zZDsOLbToGi-Zd3VfVwPfbQPdlnb4OHbWfPG7iYvY+SeO0UTiWUFTFOMiCZkW89vO06GJMUzQIIS696u1gyMvTZrvv0jT+ec69rQO67lYg872vw5AfOV4wZNUw3kex3HpOp6l2eT9bjXHiCI-Z+69N57wrhOKu5cD6hzvj-XcC825UGvnuR4Pcb6H0MAAoBa9X6l3fkQCeycOZp05poU269T5BAAaQyg5DcFbygf3SB+87YYPviQ1WCAyFigQWfZBDwr4X1vmsahnDuEgLfmPAhn9p6p1ljWV2zdKEAJdgrYepdjaMMrmA6BddK7yPlorJRf80EoMEb3GBIiG4KLUc3UB+DDCEK-jPbwc94GUNoA3CmjVuAoHoToneWVt7CPSK43+ntTFEE8aYkJhhPHp3WkMXx-iHFi0nrIyg0A3EJF4bLEhS0UAAGI5D+M0SwhCATYlZCyeExB3sL5RPMegyxjS84FOKSkqRjiZFS3ibQDQuSUCuKjjHDR98tFxOYTbKpfSBmn0iRHLK58LF6MWdrBAutOmkScbI+J1Zpg-UGVkkZpTxnlMmZUtheyDm0F4QsowAV6krLvv5dZmz7F3WUEAA).

## Should I use PDAs or Keypair accounts?
Once the account is initialized, they behave the same way, so practically there is not much difference.

Expand Down