SNS calling functions

Can an SNS instance vote to call any function on the IC through governance? Or would it have to vote to deploy a wasm that calls a function?

1 Like

You can find more information on executing functions with SNS governance being the caller here (Section 7). Note that SNS governance can actually execute functions on any canister (even those that are not registered with SNS) except for the following ones: SNS governance, SNS root, SNS ledger, SNS swap, NNS ledger, and IC management canister.

4 Likes

Greetings @mraszyk
Just adding to the reply after checking out the SNS code. Please let me know if there are flaws in these statements:

The reserved canisters are here: ic/rs/sns/governance/src/governance.rs at 58e5a889ef576e27217e35849eb82a3bc172d7ff · dfinity/ic · GitHub

To clarify this means not all SNSes, just the ones where proposals get executed. One SNS calling canisters of another is allowed. Also, not all NNS ledgers are reserved (ckBTC, ckETH), only the ICP ledger.

Once and if SNSes get ckBTC and ckETH treasuries their canisters will be reserved too.
Meanwhile, we can create generic nervous functions that allow the DAO to use other ledgers.
Currently, an SNS treasury ICP account is {owner: governance_canister, subaccount:null}, and other treasuries will follow the same pattern.

Made a repo with for our external canister validator functions:

Outputs:
amount: 1_000_000_000_000_000_000_000_000_000_000
to owner: lovjp-a2s3z-lqgmk-epyel-hshnr-ksdzf-abimc-f7dpu-33z4u-2vbkf-uae
to subaccount: ?“\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA”
from_subaccount: null
fee: ?10_000
memo: ?“\AB\AB\AB\AB\AB\AB”

Doesn’t use external libraries (only mo:base) so the security won’t be reduced. Also prevents these proposals to be used for inscribing large files