casework / CASE

Cyber-investigation Analysis Standard Expression (CASE) Ontology
https://caseontology.org
Apache License 2.0
65 stars 22 forks source link

Add CryptoWalletFacet and CryptoAddressFacet #87

Open cyberinvestigationexpress opened 2 years ago

cyberinvestigationexpress commented 2 years ago

Background

For a growing number of investigations, there is a need to represent cryptowallets and the account(s) they contain.

Crypto wallets can be hosted by an online service, or stored in a software wallet application, or secured using a hardware wallet.

Requirements

Requirement 1: CASE must be able to represent what cryptoaddress(es) were stored in a given cryptowallet.

Requirement 2: CASE must be able to represent how much cryptocurrency was stored in a given cryptoaddress at a point in time.

Requirement 3: CASE must be able to represent multiple measurements of the balance of a crypto wallet.

Benefits

Risks

Competencies demonstrated

Competency 1

The cryptoaddress(es) that were stored in a given cryptowallet, and how much cryptocurrency they had.

Admin. note - For this proposal, the competencies should include a sample JSON-LD snippet and two SPARQL queries demonstrating satisfaction of the above competency statement, i.e. SELECT ?nCryptoWallet ?xCryptoAddress and SELECT ?nCryptoWallet ?xQuantity, with the latter demonstrating something similar to usage of http://qudt.org/vocab/unit/AUD. (?x prefix is where the admin. review was unclear on what value(s) or value form(s), node or literal, should be returned.)

Solution summary

1) Add CryptoWalletFacet with the following properties:

cryptoWalletIdentifier (string): the identifier of a wallet cryptoWalletName (string): the name assigned to a wallet cryptoWalletCreatedTime (date): when the wallet was created cryptoWalletSeed (string): a series of words for accessing crypto associated with the wallet.

2) Add CryptoAddressFacet with the following properties, using qudt.org ontology to represent currency:

cryptoAddress (string): reference to CryptocurrencyAddress containing the value of the cryptocurrency address cryptoCurrencyType (string): the type of cryptocurrency in the wallet cryptoAddressFormat (string): P2SH (BASE58) cryptoAddressName (string): the name assigned to the cryptocurrency address cryptoAddressCreatedTime (date): when the cryptocurrency address was created cryptoAddressBalance (currency - qudt): the total amount of cryptocurrency in the cryptocurrency address cryptoAddressCompletedTransactionCount (integer): how many transactions have been completed using the cryptocurrency address cryptoAddressTotalSent (currency - qudt): the total amount of cryptocurrency sent by the cryptocurrency address cryptoAddressTotalReceived (currency - qudt): the total amount of cryptocurrency received by the cryptocurrency address cryptoAddressPendingTransactionCount (integer: how many transactions are pending for the cryptocurrency address

3) Add CryptocurrencyAddress observableObject (subClassOf observable:DigitalAddress)

4) Create example using public data: Wallet Explorer (https://www.walletexplorer.com/wallet/335f3892f622984f

5) Add unit test showing potential errors in property usage and how to avoid them

Coordination