Skip to content
Snippets Groups Projects
Select Git revision
  • 4bb43dc291e7db3e711d967722539468044bea50
  • develop default protected
  • congestioncontrol
  • merge-v-data-collection-spammer-0.8.2
  • WIP-merge-v-data-collection-spammer-0.8.2
  • merge-v-data-collection-spammer-0.7.7
  • tmp
  • test-masterpow-fixing
  • test-masterpow
  • test-echo
  • v-data-collection
  • v-data-collection-spammer
  • tmp-dump-spam-info
  • dump-msg-info-0.3.1
  • test-dump-message-info
  • spammer-exprandom
  • extra/tutorial
  • without_tipselection
  • hacking-docker-network
  • hacking-docker-network-0.2.3
  • master
  • v0.2.3
22 results

accountability.go

Blame
  • user avatar
    capossele authored
    0ac0ba45
    History
    accountability.go 1.15 KiB
    package accountability
    
    import (
    	"sync"
    
    	"github.com/dgraph-io/badger"
    	"github.com/iotaledger/goshimmer/packages/identity"
    	"github.com/iotaledger/goshimmer/packages/settings"
    )
    
    var ownId *identity.Identity
    
    var lazyInit sync.Once
    
    func OwnId() *identity.Identity {
    	lazyInit.Do(initOwnId)
    
    	return ownId
    }
    
    func initOwnId() {
    	ownId = getIdentity()
    }
    
    func generateNewIdentity() *identity.Identity {
    	newIdentity := identity.GenerateRandomIdentity()
    
    	if err := settings.Set([]byte("ACCOUNTABILITY_PUBLIC_KEY"), newIdentity.PublicKey); err != nil {
    		panic(err)
    	}
    
    	if err := settings.Set([]byte("ACCOUNTABILITY_PRIVATE_KEY"), newIdentity.PrivateKey); err != nil {
    		panic(err)
    	}
    
    	return newIdentity
    }
    
    func getIdentity() *identity.Identity {
    	publicKey, err := settings.Get([]byte("ACCOUNTABILITY_PUBLIC_KEY"))
    	if err != nil {
    		if err == badger.ErrKeyNotFound {
    			return generateNewIdentity()
    		} else {
    			panic(err)
    		}
    	}
    
    	privateKey, err := settings.Get([]byte("ACCOUNTABILITY_PRIVATE_KEY"))
    	if err != nil {
    		if err == badger.ErrKeyNotFound {
    			return generateNewIdentity()
    		} else {
    			panic(err)
    		}
    	}
    
    	return identity.NewIdentity(publicKey, privateKey)
    }