Edit me

English / 한국어

지갑규정

Version 1.0.0

지갑규정은 지갑 데이터구조 및 디지털신분 불러오기 또는 자산계정 QR코드의 데이터구조를 서술합니다.

1. 지갑문서 구조

지갑문서 데이터는 json서식으로 저장되며 문서 이름에는 규칙이 없습니다. 지갑문서 데이터구조는 다음과 같습니다.

{
  "name": "MyWallet",
  "version": "1.0",
  "scrypt": {},
  "defaultOntid": "did:ont:TJNxJe2Ty8eSCjCDxDPwiS78NRAn8XPTFL",
  "defaultAccountAddress": "TJNxJe2Ty8eSCjCDxDPwiS78NRAn8XPTFL",
  "createTime": "2018-03-14T03:12:30.862Z",
  "identities": [],
  "accounts": [],
  "extra": null
}

파라미터 서술:

name은 지갑이름 입니다.

version은 지갑버전 번호입니다.

scrypt는 SCrypt알고리즘 파라미터 입니다.

defaultOntid는 지갑의 디폴트Ontid입니다.

defaultAccountAddress는 지갑의 디폴트계정 주소입니다.

createTime은 지갑 생성시간입니다.

identities은 신분 리스트입니다.

accounts는 계정 리스트입니다.

extra는 백업 파라미터입니다.

실제 지갑 데이터는 다음과 같습니다.

{
	"name": "mickey",
	"defaultOntid": "",
	"defaultAccountAddress": "",
	"createTime": "2018-06-30T08:52:01.519Z",
	"version": "1.0",
	"scrypt": {
		"n": 4096,
		"r": 8,
		"p": 8,
		"dkLen": 64
	},
	"identities": [{
		"ontid": "did:ont:ATcHA9eYKyve8M74CB4p6Ssx7kwXjmREUa",
		"label": "mickey",
		"lock": false,
		"controls": [{
			"id": "1",
			"algorithm": "ECDSA",
			"parameters": {
				"curve": "P-256"
			},
			"key": "M+PnrYLVDrU0gkSzj0FAsvqCYv+HWEEUMDSyKSJACzJhZVglFU9tkfQKlLby5UCY",
			"address": "ATcHA9eYKyve8M74CB4p6Ssx7kwXjmREUa",
			"salt": "wwa12j4K0SyDP23+UDJNtA==",
			"enc-alg": "aes-256-gcm"
		}]
	}],
	"accounts": [{
		"address": "AJQLNWy9X6qdeEFrSH6UzgEjadSsRiYDCS",
		"label": "mickey",
		"lock": false,
		"algorithm": "ECDSA",
		"parameters": {
			"curve": "P-256"
		},
		"key": "qFbemAbu7fEjOJzAZZhGkmzp2YNxdSCuK7xyvhBAnUBX/FmAj2Ns84Y7frh6hfQv",
		"enc-alg": "aes-256-gcm",
		"salt": "u+SiqpRk17b0vIPesh4xXA==",
		"isDefault": false,
		"publicKey": "037fb6dfc9420e1d8275d9133d6d69fe64e8e3567241e7583234b9efa8b2ce7ae1",
		"signatureScheme": "SHA256withECDSA"
	}],
	"extra": null
}

1.1 Scrypt파라미터

SCrypt알고리즘 파라미터, Scrypt데이터 구조:

{
  "n": 16384,
  "r": 8,
  "p": 8,
  "dkLen" : 64
}

파라미터 서술:

n은 메모리 소모량이며 2^N여야 합니다.

r은 파라미터입니다.

p는 SCrypt알고리즘의 병렬파라미터 입니다.

dkLen은 파생key의 길이입니다.

1.2 디지털신분

디지털신분 데이터구조:

{
  "ontid": "did:ont:TQLASLtT6pWbThcSCYU1biVqhMnzhTgLFq",
  "label": "MyIdentity",
  "lock": false,
  "isDefault" : false,
  "controls": []
}

파라미터 서술:

ontid는 신분id입니다.

label은 닉네임입니다.

lock은 해당신분의 락킹 여부를 뜻 합니다

isDefault는 디폴트의 신분사용 여부를 뜻합니다.

controls는 관리자입니다.

Control데이터구조

Control은 데이터신분의 관리자이며 내부에는 관리자의 암호화된 알고리즘 명과 프라이빗키, 퍼블릭키, 주소, salt등이 포함되어 있습니다.

{
  "algorithm": "ECDSA",
  "parameters": {},
  "id": "1",
  "key": "6PYWB8m1bCnu5bQkRUKAwbZp2BHNvQ3BQRLbpLdTuizpyLkQPSZbtZfoxx",
  "address": "AQkGLumU1tnyJBGV1ZUmD229iQf9KRTTDL",
  "salt": "Rv4v3a4U1zFEq28/"
}

파라미터 서술:

algorithm은 서명알고리즘 명칭입니다.

parameters은 곡선 파라미터 입니다.

id는 관리자id입니다.

key는 암호화된 프라이빗키 입니다.

address는 base58주소입니다.

salt는 16바이트의 솔트이며 base64서식으로 저장됩니다.

Parameter데이터구조

서명알고리즘 파라미터 데이터구조

{
  "curve":"P-256"
}

파라미터 서술:

curve is the name of the elliptic curve.

1.3 Account

자산계정정보Account데이터구조:

{
    "address": "AadQ5xRwrSsFTGzKfLHc1brzykdnf7phhD",
    "label": "a6575fd9",
    "lock": false,
    "algorithm": "ECDSA",
    "parameters": {
    	"curve": "P-256"
     },
    "key": "NyfxXX+xKDG2agrDy3espqX7N0k3MysTgqx5FxJGI8bkklZQO6+6BSluyBRvEsOx",
    "enc-alg": "aes-256-gcm",
    "salt": "MHct5XIedi86rQILJFi9lA==",
    "isDefault": false,
    "publicKey": "03e897f5a1ea306270e3e1e539c9065b6905e2430aae7f4802e1114f01634d7235",
    "signatureScheme": "SHA256withECDSA"
}

파라미터 서술:

address는 base58주소입니다.

enc-alg는 프라이빗키 암호알고리즘 명칭입니다.

salt는 16바이트의 솔트이며 base64서식으로 저장됩니다.

publicKey는 퍼블릭키 입니다.

signatureScheme는 서명알고리즘 체계입니다.

isDefault는 디폴트계정 여부를 뜻 합니다.

label는 닉네임입니다.

lock는 락킹 여부를 뜻 합니다.

algorithm은 서명알고리즘 명칭입니다.

parameters은 서명알고리즘 파라미터 입니다.

key는 암호화된 프라이빗키 입니다.

2. QR코드 규정

신분과 계정QR코드의 역할은 스캔을 통해 편리하게 신분과 계정을 불러오는 것이며, QR코드는 디지털신분과 자산계정 규정을 모두 지원합니다.

{
	"type":"I",
	"label": "MyIdentity",
	"algorithm": "ECDSA",
	"scrypt": {
		"n": 4096,
		"p": 8,
		"r": 8,
		"dkLen": 64
	},
	"key":"x0U3gy7mQMpzCYXwlt/oWZerSGaCUimSMN2UiSd2aKs=",
	"address" : "AQkGLumU1tnyJBGV1ZUmD229iQf9KRTTDL",
	"salt" : "Rv4v3a4U1zFEq28/",
	"parameters": {
		 "curve": "P-256"
	}
}

파라미터 서술:

type은 유형이며 I는 신분을, A 는 계정을 의미합니다.

label은 닉네임입니다.

algorithm은 서명알고리즘 명칭입니다.

parameters는 서명알고리즘 파라미터 입니다.

scrypt는 scrypt파라미터 입니다.

key는 암호화된 프라이빗키 입니다.

address는 주소입니다.

salt는 16바이트 솔트이며 base64서식으로 저장됩니다.