diff --git a/config.default.json b/config.default.json
index 25816877fa7f7861cec47e6db5a2be922f4076e8..de416ecb1feb1c4d3cae756a132cf36bde034e43 100644
--- a/config.default.json
+++ b/config.default.json
@@ -28,6 +28,12 @@
   "database": {
     "directory": "mainnetdb"
   },
+  "drng": {
+    "instanceId": 1,
+    "threshold": 3,
+    "distributedPubKey": "",
+    "committeeMembers": []
+  },
   "gossip": {
     "port": 14666
   },
diff --git a/plugins/drng/drng.go b/plugins/drng/drng.go
new file mode 100644
index 0000000000000000000000000000000000000000..a1fb2c489b4b24ea7a6a1822057e5dbe3ce5f38a
--- /dev/null
+++ b/plugins/drng/drng.go
@@ -0,0 +1,36 @@
+package drng
+
+import (
+	"encoding/base64"
+	"errors"
+	"fmt"
+
+	"github.com/iotaledger/goshimmer/plugins/config"
+	"github.com/iotaledger/hive.go/crypto/ed25519"
+)
+
+var (
+	// ErrParsingCommitteeMember is returned for an invalid committee member
+	ErrParsingCommitteeMember = errors.New("cannot parse committee member")
+)
+
+func parseCommitteeMembers() (result []ed25519.PublicKey, err error) {
+	for _, committeeMember := range config.Node.GetStringSlice(CFG_COMMITTEE_MEMBERS) {
+		if committeeMember == "" {
+			continue
+		}
+
+		pubKey, err := base64.StdEncoding.DecodeString(committeeMember)
+		if err != nil {
+			return nil, fmt.Errorf("%w: invalid public key: %s", ErrParsingCommitteeMember, err)
+		}
+		publicKey, err, _ := ed25519.PublicKeyFromBytes(pubKey)
+		if err != nil {
+			return nil, err
+		}
+
+		result = append(result, publicKey)
+	}
+
+	return result, nil
+}
diff --git a/plugins/drng/parameters.go b/plugins/drng/parameters.go
new file mode 100644
index 0000000000000000000000000000000000000000..310e21eeb077de1b1de5002fdb143021410f1d19
--- /dev/null
+++ b/plugins/drng/parameters.go
@@ -0,0 +1,19 @@
+package drng
+
+import (
+	flag "github.com/spf13/pflag"
+)
+
+const (
+	CFG_INSTANCE_ID         = "drng.instanceId"
+	CFG_THRESHOLD           = "drng.threshold"
+	CFG_DISTRIBUTED_PUB_KEY = "drng.distributedPubKey"
+	CFG_COMMITTEE_MEMBERS   = "drng.committeeMembers"
+)
+
+func init() {
+	flag.Uint32(CFG_INSTANCE_ID, 1, "instance ID of the drng instance")
+	flag.Uint32(CFG_THRESHOLD, 3, "BLS threshold of the drng")
+	flag.String(CFG_DISTRIBUTED_PUB_KEY, "", "distributed public key of the committee (hex encoded)")
+	flag.StringSlice(CFG_COMMITTEE_MEMBERS, []string{}, "list of committee members of the drng")
+}
diff --git a/plugins/drng/plugin.go b/plugins/drng/plugin.go
index 7f009d48a0653fa3cc108d6de4956ecb46adbe52..597d038d48313addbeb41c527ed06dd6ffa67ce8 100644
--- a/plugins/drng/plugin.go
+++ b/plugins/drng/plugin.go
@@ -1,10 +1,15 @@
 package drng
 
 import (
+	"encoding/hex"
+
 	"github.com/iotaledger/goshimmer/packages/binary/drng"
 	"github.com/iotaledger/goshimmer/packages/binary/drng/payload"
+	"github.com/iotaledger/goshimmer/packages/binary/drng/state"
+	cbPayload "github.com/iotaledger/goshimmer/packages/binary/drng/subtypes/collectiveBeacon/payload"
 	"github.com/iotaledger/goshimmer/packages/binary/messagelayer/message"
 	"github.com/iotaledger/goshimmer/packages/binary/messagelayer/tangle"
+	"github.com/iotaledger/goshimmer/plugins/config"
 	"github.com/iotaledger/goshimmer/plugins/messagelayer"
 	"github.com/iotaledger/hive.go/events"
 	"github.com/iotaledger/hive.go/logger"
@@ -23,7 +28,36 @@ var (
 
 func configure(*node.Plugin) {
 	log = logger.NewLogger(name)
-	Instance = drng.New()
+
+	// parse identities of the committee members
+	committeeMembers, err := parseCommitteeMembers()
+	if err != nil {
+		log.Fatalf("Invalid %s: %s", CFG_COMMITTEE_MEMBERS, err)
+	}
+
+	// parse distributed public key of the committee
+	var dpk []byte
+	if str := config.Node.GetString(CFG_DISTRIBUTED_PUB_KEY); str != "" {
+		bytes, err := hex.DecodeString(str)
+		if err != nil {
+			log.Fatalf("Invalid %s: %s", CFG_DISTRIBUTED_PUB_KEY, err)
+		}
+		if l := len(bytes); l != cbPayload.PublicKeySize {
+			log.Fatalf("Invalid %s length: %d, need %d", CFG_DISTRIBUTED_PUB_KEY, l, cbPayload.PublicKeySize)
+		}
+		dpk = append(dpk, bytes...)
+	}
+
+	// configure committee
+	committeeConf := &state.Committee{
+		InstanceID:    config.Node.GetUint32(CFG_INSTANCE_ID),
+		Threshold:     uint8(config.Node.GetUint32(CFG_THRESHOLD)),
+		DistributedPK: dpk,
+		Identities:    committeeMembers,
+	}
+
+	Instance = drng.New(state.SetCommittee(committeeConf))
+
 	configureEvents()
 }