自己主権のアイデンティティは、集中的な権限に依存せず、決して奪うことができない人、組織、または物のための生涯の携帯性アイデンティティです。 Self Shoverign Identityは2パーティの関係モデルであり、あなたと組織の間に第三者が来ることはなく、現在は「ピア」と見なされています。
SSIは今日、DIDSと検証可能な資格情報で可能です。
DIDは、暗号化を使用して識別子の制御を証明できるため、集中登録機関を必要としない新しいタイプのグローバルな識別子(URI)です。 ICANNやNANPのような中央レジストラを使用して、私たちがよりよく知っている識別子の1つ(ドメイン名または電話番号)のように考えることができます。
検証可能な資格情報(VC)は、W3C検証可能な請求ワーキンググループによって定義される相互運用可能なデジタル資格情報の新しい形式です。検証可能な資格情報は、W3Cの検証可能な資格情報データモデルに準拠しており、Triangle of Trustのパターンを使用して相互作用を促進します。
発行者は、通常、JSON Docsを特別な方法でデジタルで署名することにより、資格情報を作成します。ホルダーはそれらを保管し、検証者はそれらに基づいて証拠を求めます。保有者が検証者に提供する検証可能なプレゼンテーションは、検証者の要件を満たすために保有者によって構築された証拠のパッケージ、または1つ以上の資格から派生したデータのパッケージです。検証者は、検証可能なデータレジストリ(通常、ブロックチェーン)に対してデジタル署名をチェックすることにより、どの発行者が何かを証明したかを確実に学習します。
React MSDKは、Evernym Mobile SDKを使用してARIES互換のReactネイティブパッケージとして構築されており、検証可能な資格情報モデルのホルダー側を表すカスタマイズされたデジタルウォレット(完全に制御下)をすばやく構築できます。
React-Native MobileSDKを使用すると、アプリケーションは次のとおりです。
アイデンティティウォレットアプリは、生年月日の正確な日付を明らかにすることなく、特定の法定年齢を超えていることを証明し、健康記録を個人的かつ安全に共有し、ユーザー名とパスワードの概念を完全に廃止するなど、無数のユースケースを可能にします。
アイデンティティウォレットのテストには、反対の通信側を表すVerity SDKを使用できます。
Evernym Mobile SDKおよびVerity SDKリポジトリでは、アイデンティティの財布の構築と検証可能な資格情報交換プロセスに関する多くの有用な情報を見つけることができます。
新しいプロジェクトを作成するには、次の手順を実行する必要があります。
新しいReactネイティブプロジェクトを作成します。このガイドのawesomeMsdkProjectと呼びます。
npx react-native init awesomeMsdkProject --version 0.65.1注:Evernym React-Native-SDKのpackage.jsonファイルのpeerDependenciesセクションで指定されたものと同じバージョンのreact-nativeを使用する必要があります。現在推奨されているReact-Nativeバージョンは0.65.1です。別のバージョンを使用することにより、SDKに問題が発生するリスクがあります。
新しいアプリケーションにSDKを含めるには、依存関係を設定する必要があります。
依存関係のセクションを置き換えて、 @evernym/react-native-white-label-app依存関係をpackage.jsonに残します。
"dependencies" : {
"@evernym/react-native-white-label-app" : " https://gitlab.com/evernym/mobile/react-native-white-label-app.git " ,
},ネイティブの依存関係は、アプリの依存関係に配置する必要があります(問題を参照)。それらは、SDKのピア依存関係としてリストされています。
@evernym/react-native-white-label-appからすべてのピア依存関係をapp package.jsonのdependenciesセクションに追加します。
"dependencies" : {
"@react-native-community/async-storage" : " x " ,
...
"react-native-zip-archive" : " x " ,
"react-native" : " 0.65.1 " ,
"rn-fetch-blob" : " x " ,
...
}, @evernym/react-native-white-label-appからすべてのdevDependenciesをapp package.jsonのdevDependenciesセクションに追加します。
"devDependencies" : {
...
"copyfiles" : " x "
},次のコマンドをアプリpackage.jsonのscriptsセクションに追加します。
"scripts" : {
...
"evernym-sdk:configure" : " yarn --cwd node_modules/@evernym/react-native-white-label-app run configure "
},このコマンドはevernym-sdkを介して将来のアプリケーションのカスタマイズに必要なモジュールを追加します。
これで、すべての依存関係をインストールして自動構成を実行できます。プロジェクトディレクトリで次のコマンドを実行できます。
yarn
yarn evernym-sdk:configureこれにより、すべての依存関係がインストールされ、必要なモジュールがawesomeMsdkProject/app/evernym-sdkディレクトリに追加されます。
デフォルトのApp.jsを削除し、 index.jsに次のように配置します。
import * as EvernymSdk from '@evernym/react-native-white-label-app' ;
import { name as appName } from './app.json' ;
EvernymSdk . createApp ( appName ) ; app/evernym-sdk/provision.jsファイルに移動し、アプリケーションと機能によって使用される環境を定義し、トークンのプロビジョニングを受けるために呼び出されます。
アプリケーション環境は、スポンサーサーバーが登録されている環境と一致する必要があることに注意してください。
たとえば、スポンサーサーバーがDEMO環境に登録されている場合、アプリケーションはDEMOを使用する必要があります。
DEFAULT_SERVER_ENVIRONMENT使用する環境の名前。
いくつかの事前定義された環境があります:
// use default combination - DEMO for debug and PROD for releases builds
export const DEFAULT_SERVER_ENVIRONMENT = null
// use Demo env
// Agency: `https://agency.pps.evernym.com` and `Sovrin Staging Net`
export const DEFAULT_SERVER_ENVIRONMENT = 'DEMO'
// use Production env
// Agency: `https://agency.evernym.com` and `Sovrin Live Net`
export const DEFAULT_SERVER_ENVIRONMENT = 'PROD'
// use Staging env
// Agency: `https://agency.pstg.evernym.com` and `Sovrin Staging Net`
export const DEFAULT_SERVER_ENVIRONMENT = 'STAGING' また、 SERVER_ENVIRONMENTSとDEFAULT_SERVER_ENVIRONMENT変数の組み合わせを使用して、カスタム環境を提供および使用することもできます。
export const SERVER_ENVIRONMENTS = {
'CUSTOM' : {
agencyUrl : 'ahency_url' ,
agencyDID : 'did' ,
agencyVerificationKey : 'verkey' ,
poolConfig : [ { key : 'staging' , genesis : 'genesis_transactions' } ] ,
}
}
export const DEFAULT_SERVER_ENVIRONMENT = 'CUSTOM' GET_PROVISION_TOKEN_FUNCアプリケーション用のエージェントプロビジョニングトークンを取得するために、関数が呼び出されます。
/// example
export const GET_PROVISION_TOKEN_FUNC = async (): [error: string | null, token: string | null] => {
try {
// call your sponsor server endpoint
const response = fetch_api(your_endpoint)
// process response
// return result in format [error, token]
return [null, response.token]
} catch (error) {
return [error.message, null]
}
}
おめでとう!これで、アプリケーションのJS部分を準備しました。次のステップとして、ターゲットプラットフォーム用のビルドを構成する必要があります。
注:この時点で、ベースアプリの構成セクションを既に完了する必要があります。
Androidプラットフォーム用のアプリケーションの構築を構成するために、ドキュメントを参照してください。
注:この時点で、ベースアプリの構成セクションを既に完了する必要があります。
iOSプラットフォーム用のアプリケーションの構築を構成するために、ドキュメントを参照してください。
利用可能な構成オプションの概要を取得するには、ドキュメントを参照してください。
この取り組みは、欧州連合のHorizon 2020 Research and Innovationプログラムから資金を受け取ったプロジェクトの一部であり、Grant契約番号871932に基づいて、すべての利益のために自己驚異的アイデンティティの広範な採用を進めることを目的としたEssif-Labへの参加を通じて提供されました。