🎟️

Passport User Guide

Responsible Roles: Accounting

đź’ˇ
This is an overview of how to perform the most important dOrg Passport use cases without a Passport UI (will be developed later). All of these transactions must be executed via the Main dOrg Safe.
‣

Passport

Passports can not be explicitly burned. They can be moved to an address that has no associated private key, though. But a better approach might be burning just burning the Rep, and in the case when a Passport has 0 Rep associated with it, we can show some other image, for instance.

It would also be cool if the Passport image evolved as the amount of Rep changed.

How to Mint Passports

  1. Go to: https://app.safe.global/eth:0xdb22d2d37db92EA7fa6993C9f6Ead55FBb1eF4EA/apps?appUrl=https%3A%2F%2Fapps.gnosis-safe.io%2Ftx-builder
  2. Enter the Passport address in the address filed: 0x99a67716105b423bA924A4E3f87FeCecC0880B92
  3. Past this in the ABI field:
[
  {
    "inputs": [{ "internalType": "address", "name": "to", "type": "address" }],
    "name": "safeMint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]
  1. Fill in the “to” address and click add transaction.
  2. Repeat step 4. until all addresses you want to mint Passports to are added.
  3. Click "Create Batch".
  4. Click "Simulate" to check for errors.
  5. Click "Send Batch".

How to Transfer Passports

A Passport can only be moved from one address to another address by the dOrg Main Safe. After a Passport is moved, anyone (permissionless) can call the `updateOwner` function on the Rep and Badges contracts to also move the associated Rep and Badges to the new owner (this will also happen automatically the next time our main safe interacts with it). For instance, when minting Rep to a Passport that has moved will both mint the Rep and move the old Rep to the new address.

  1. Go to: https://app.safe.global/eth:0xdb22d2d37db92EA7fa6993C9f6Ead55FBb1eF4EA/apps?appUrl=https%3A%2F%2Fapps.gnosis-safe.io%2Ftx-builder
  2. Enter the Passport address in the address filed: 0x99a67716105b423bA924A4E3f87FeCecC0880B92
  3. Past this in the ABI field:
[
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"from",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"to",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"tokenId",
            "type":"uint256"
         }
      ],
      "name":"transferFrom",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   }
]
  1. Fill in the “from” address (current holder of the Passport), the “to” address (will be the new holder of the Passport), the “tokenId” (the id of the Passport to move), and click add transaction.
  2. Repeat step 4. Until all Passport moves are recorded.
  3. Click "Create Batch".
  4. Click "Simulate" to check for errors.
  5. Click "Send Batch".
‣

Rep

How to Mint Rep

  1. Go to: https://app.safe.global/eth:0xdb22d2d37db92EA7fa6993C9f6Ead55FBb1eF4EA/apps?appUrl=https%3A%2F%2Fapps.gnosis-safe.io%2Ftx-builder
  2. Enter the Rep address in the address filed: 0x885d7f09dbd93204c0dad95f5e226b0966e6fa9b
  3. Past this in the ABI field:
[
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"toPassportId",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"amount",
            "type":"uint256"
         }
      ],
      "name":"mint",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   }
]
  1. Fill in the “toPassportId” the id of the Passport to mint Rep for and the amount of Rep to mint.
  2. Repeat step 4. until all Passports you want to mint Rep to are added.
  3. Click "Create Batch".
  4. Click "Simulate" to check for errors.
  5. Click "Send Batch".

How to Burn Rep

  1. Go to: https://app.safe.global/eth:0xdb22d2d37db92EA7fa6993C9f6Ead55FBb1eF4EA/apps?appUrl=https%3A%2F%2Fapps.gnosis-safe.io%2Ftx-builder
  2. Enter the Rep address in the address filed: 0x885d7f09dbd93204c0dad95f5e226b0966e6fa9b
  3. Past this in the ABI field:
[
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"passportId",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"amount",
            "type":"uint256"
         }
      ],
      "name":"burnFrom",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   }
]
  1. Fill in the “passportId” the id of the Passport to burn Rep from, and the amount of Rep to burn.
  2. Repeat step 4. until all Passports you want to burn Rep from are added.
  3. Click "Create Batch".
  4. Click "Simulate" to check for errors.
  5. Click "Send Batch".
‣

Badges

The Badges contract is based on ERC1155 and can, in reality, hold both fungible and non-fungible tokens.

How to Mint a Badges

First, we must decide what ID a badge should have. For instance, we can say that PM badges have ID 0 and TA badges har ID 1.

  1. Go to: https://app.safe.global/eth:0xdb22d2d37db92EA7fa6993C9f6Ead55FBb1eF4EA/apps?appUrl=https%3A%2F%2Fapps.gnosis-safe.io%2Ftx-builder
  2. Enter the Badges address in the address filed: 0x06dc77373cc65b45fec50e643964d85b6301f3aa
  3. Past this in the ABI field:
[
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"passportId",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"tokenId",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"amount",
            "type":"uint256"
         },
         {
            "internalType":"bytes",
            "name":"data",
            "type":"bytes"
         }
      ],
      "name":"mint",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   }
]
  1. Fill in the “passportId” the id of the Passport to mint a Badge for, the “tokenId” (for instance, 0 for the PM badge and 1 for the TA badge), the “amount” should be 1 (when creating non-fungible tokens like a Badge), and in the “data” field write “0x”.
  2. Repeat step 4. until all Badges you want to mint are added.
  3. Click "Create Batch".
  4. Click "Simulate" to check for errors.
  5. Click "Send Batch".

How to Burn Badges

  1. Go to: https://app.safe.global/eth:0xdb22d2d37db92EA7fa6993C9f6Ead55FBb1eF4EA/apps?appUrl=https%3A%2F%2Fapps.gnosis-safe.io%2Ftx-builder
  2. Enter the Badges address in the address filed: 0x06dc77373cc65b45fec50e643964d85b6301f3aa
  3. Past this in the ABI field:
[
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"passportId",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"tokenId",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"amount",
            "type":"uint256"
         }
      ],
      "name":"burn",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   }
]
  1. Fill in the “passportId” the id of the Passport to burn a Badge for, the “tokenId” (for instance, 0 for the PM badge and 1 for the TA badge), and the “amount” should be 1 (when creating non-fungible tokens like a Badge).
  2. Repeat step 4. until all Badges you want to burn are added.
  3. Click "Create Batch".
  4. Click "Simulate" to check for errors.
  5. Click "Send Batch".