Skip to content

[ETH-245] DelegatedAccessRegistry for the chat app#348

Merged
bearni95 merged 24 commits intomasterfrom
ETH-245
Aug 24, 2022
Merged

[ETH-245] DelegatedAccessRegistry for the chat app#348
bearni95 merged 24 commits intomasterfrom
ETH-245

Conversation

@bearni95
Copy link
Copy Markdown
Contributor

@bearni95 bearni95 commented Aug 9, 2022

The chat app uses the main (metamask) account, as well as a delegated one to prevent prompting for metamask confirmations upon every signature.

To keep tabs on what delegated wallet belongs to which main wallet the DelegatedAccessRegistry is implemented, providing for a simple registry where one main wallet can register multiple delegated ones, while every delegated wallet must belong to only one main wallet.

@fonty1 fonty1 requested a review from samt1803 August 9, 2022 19:50
@linear
Copy link
Copy Markdown

linear bot commented Aug 9, 2022

ETH-245 Create prototype ERC20JoinPolicy

Create a smart contract that allows people to join streams if they have enough of a certain ERC-20 token in their wallet.

https://miro.com/app/board/uXjVOMsTIgI=/?invite_link_id=610135856706

Constructor

  • address of StreamRegistry
  • streamId
  • permissions[] to grant
  • minRequiredBalance
  • list of chainId, tokenAddress tuples
    • chainIds[] of length N
    • tokenAddress[] of length N

requestJoin

requestJoin() {
  // Let's check if the user has enough tokens already on the local chain!
  // If that's the case, we don't need the oracle at all!
  if (tokenOnLocalChain.balanceOf(msg.user) >= minRequiredBalance) {
    accept(msg.sender)
  } else {
    // call oracle to get the balances on each chain
    askOracleForSumOfBalances(msg.sender, chainIds[], tokenAddress[])
  }
}

internal oracleCallback(userAddress, sumOfBalances) {
  if (sumOfBalances >= minRequiredBalance) {
      accept(userAddress)
  } else {
      throw 'Not enough balance!'
  }
}

internal accept(userAddress) {
  streamRegistry.grantPermissions(userAddress, streamId, permissions[])
}

@fonty1 fonty1 requested a review from samigabor August 9, 2022 19:50
Copy link
Copy Markdown
Contributor

@samt1803 samt1803 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@bearni95 bearni95 merged commit e565557 into master Aug 24, 2022
@bearni95 bearni95 deleted the ETH-245 branch August 24, 2022 14:16
samt1803 added a commit that referenced this pull request Aug 24, 2022
* origin/master:
  [ETH-245] DelegatedAccessRegistry for the chat app (#348)

# Conflicts:
#	packages/smartcontracts/package.json
#	packages/smartcontracts/scripts/deployToLivenet/1_deployContracts.ts
#	packages/smartcontracts/scripts/deployToLivenet/2_interactWithContracts.ts
samt1803 added a commit that referenced this pull request Sep 15, 2022
* origin/master: (30 commits)
  Eth 362 reset trusted forwarder (#367)
  release(config): @streamr/config 2.4.0
  feat: new addresses for DU3 things (#372)
  [FRONT-1023] ChatApp: Delegated Access Registry (#323)
  tested verify command with DelegatedAccessRegistry (#364)
  cleanup: some lint warn fixes, remove one old unused infura api key, … (#363)
  [ETH-245] DelegatedAccessRegistry for the chat app (#348)
  Update README.md
  Create README.md
  Create README.md
  Update README.md
  release(config): @streamr/config 2.3.0
  config: add mpv3 addresses (#356)
  Eth 339 preload marketplace v3 contracts into mainchain (#353)
  release(config): @streamr/config 2.2.1
  build(config): update release script conventional commit message
  refactor(config): validate Chain() parameters
  refactor(config): Chain.toString() returns lowercased chain name
  release: @streamr/config 2.2.0
  feat(config): add Chain.toString() (#346)
  ...

# Conflicts:
#	packages/config/src/networks.json
#	packages/docker-dev-chain-init/hardhat.config.js
#	packages/smartcontracts/.solhint.json
#	packages/smartcontracts/package.json
#	preload_parity_images.sh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants