SNS treasury fund id

On the command to initiate SNS treasury transfers, there is a field from_treasury. I understand this relates to the treasuries of ICP and the SNS native token. Is there a way to see which “treasury-id” corresponds to which?

For example, does from_treasury = 0 transfer from the ICP treasury and from_treasury = 1 transfer the SNS native token? Is there a way to create more treasuries (e.g. 2, 3, …)?

See here:

  // Whether to make the transfer from the NNS ledger (in ICP) or
  // to make the transfer from the SNS ledger (in SNS tokens).
  enum TransferFrom {
    TRANSFER_FROM_UNSPECIFIED = 0;
    TRANSFER_FROM_ICP_TREASURY = 1;
    TRANSFER_FROM_SNS_TOKEN_TREASURY = 2;
  }
1 Like

Thank you! What exactly does TRANSFER_FROM_UNSPECIFIED = 0; mean? What happens when you specify that?

It will return an error when trying to create the proposal. Here is the code of the proposal validation: ic/rs/sns/governance/src/proposal.rs at 7eace38b7580dc35af53b9180ea40480af4977dc · dfinity/ic · GitHub. I don’t know why it exists in the first place but I think it is something to do with protobuf conventions.

1 Like