Data Connectors

With Sibyl, we can fetch arbitrary private data and process them in an end-to-end private environment with the enclave. Sibyl provides a unified interface to support the development of any data pipeline that you want to build. Each data pipeline is structured as a custom data connector in Sibyl. In this section, we will primarily present three examples:

  • Plaid: query the balance from the user's bank account and generate zero-knowledge range proofs for it

  • zk GitHub: query stats from the user's GitHub account and generate zero-knowledge range proofs for a specific data slot

  • ChatGPT: chat completion through calling ChatGPT APIs (by OpenAI) in a privacy-preserving environment

The input of the Sibyl API should be in JSON format with query_type and query_param:

{
    "query_type": "chatgpt_chat",
    "query_param": {
        "chat": "What the lifetime in Rust?",
        "bearer": "sk-xpPk35xxxxxx"
    }
}

query_type specifics which data connector and which task you want to use. query_param is a set of key-value pairs representing parameters for this query_type. Each query_type has a different set of query_param.

The response is also in JSON format with the fields status, result, and attestation. For example,

{
    "status": "success",
    "result": "{\"userIdHash\":\"0x335b4b80f393df0229e3443c45fa22c6ef210b7ef8a2960a3939b61d45ccaaab\",\"zk_claim\":{\"encryptedClaim\":\"aNg8nE9hsKzlYxP4pQeq+r458z1FB7Q6K21eUfnp+cP6YPMMiHdE/gzMaRGYZiXmyYrW8+RCH/M3KN6bLsxUfk3ynQzLUaTSuWbL+kc5UdUrPTtTXKzG+i4uy+qn8Y+2TpsxjUMwLUYm185Pv2Z3nVSTjQ/8gsD7mN7d1rG2KYA=,pOrAo+t4JTrOP5sjdZAV08WfStNinz80JcA/1yVkskKgb/iBi4YJIDMUJ2I8s0kwS+/DI43r5N5oFJdU1vKJmQ2XGaa8YEZ4W79b6evXE3CphGNa7JB2GK24iIf+2I9euXIdjigur71Usx8DaVnfBNfX8WylzhwJfuMk8F34kYs=\",\"signature\":\"14272951555693684539242114834119896852236915619948746083204642436072376840546,8768332475319102537914508146713081179953322023933496880607458522217026729525,121833752050264021846028565115039479771097518029776289382904936068374855504\",\"signatureHash\":\"0x7ee5da60136b4e4697fd53ae0fa74cc5689615c0867d53a558e658450ce90331\"}}",
    "attestation": "{\"id\":\"6b7e7db688b74c23a60d2915c412edf5\",\"isvEnclaveQuoteBody\":\"AwACAAAAAAAJAA4Ak5pyM/ecTKmUCg2zlX8GB68yAYJCE06VpG7xwG9tOTEAAAAACwsQD///AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAADnAAAAAAAAAAvsMq5gDZnMQRvBZQ2I7harwgQpIGZc2SX/Vh3H0KKHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACD1xnnferKFHD2uvYqTXdDA8iZ22kCD5xw7h38CMfOngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEpMl3g5KAodMtCwDIb5xh1TJ2ZqL58jlWK/uq/Xch2tgUbb629U5fKCUByorzvEgs49GFZ4mNjpEztkrt+qpryhAAABCVrEY4EXNpH86jt2YoK6CHTfGjdwxt5mMfShWBxAF98OiUKaJJ/AUYB6/XB52qI9sbZgefU8MA+rSipNvl+M4Hosgixzhe3edDYprehZeoTXVBnbxll0HttacgbiT7HHTuyOiPkMq2sPMx6YeDzY0TzMLQqUMQvtPxMxI1vz/uCwsQD///AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAAAAAADnAAAAAAAAABkqpQzhwM7wPM+J57Wxaw15ePXCse3Pd02HcC6BVNi/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMT1d115ZQPpYTf3fGioKaAFasje1wFAsIGwlEkMV7/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhAqrUe3m9l4hg3UIkC7fvS1CiZCK84CNtVRawTRK0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3o1C2+mpFd/XjE1NUQEnlA3eW+LrrKlcgQAiRHKkVOxDqs92anOH1xWMnhJUySXWlh2plQcUMyhuyYlKYCwD/SAAAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8FAGIOAAAtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRTh6Q0NCSm1nQXdJQkFnSVZBTVRDVmtWdStURGZVakt0dEgvRktUU3RnRm1FTUFvR0NDcUdTTTQ5QkFNQwpNSEF4SWpBZ0JnTlZCQU1NR1VsdWRHVnNJRk5IV0NCUVEwc2dVR3hoZEdadmNtMGdRMEV4R2pBWUJnTlZCQW9NCkVVbHVkR1ZzSUVOdmNuQnZjbUYwYVc5dU1SUXdFZ1lEVlFRSERBdFRZVzUwWVNCRGJHRnlZVEVMTUFrR0ExVUUKQ0F3Q1EwRXhDekFKQmdOVkJBWVRBbFZUTUI0WERUSXpNRFV4TURFNU5UZ3dPVm9YRFRNd01EVXhNREU1TlRndwpPVm93Y0RFaU1DQUdBMVVFQXd3WlNXNTBaV3dnVTBkWUlGQkRTeUJEWlhKMGFXWnBZMkYwWlRFYU1CZ0dBMVVFCkNnd1JTVzUwWld3Z1EyOXljRzl5WVhScGIyNHhGREFTQmdOVkJBY01DMU5oYm5SaElFTnNZWEpoTVFzd0NRWUQKVlFRSURBSkRRVEVMTUFrR0ExVUVCaE1DVlZNd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUWgpIREc4Y0NESzlWQnBuWldUaHZsamo4anRNdXZIMVAwMGh3dTZYekV2bFZOR3I0S2MrdUdsRWZhWFVrd2tqL2swCit3aVJTS1Q4Y0NybTh3S0R3K3VvbzRJRERqQ0NBd293SHdZRFZSMGpCQmd3Rm9BVWxXOWR6YjBiNGVsQVNjblUKOURQT0FWY0wzbFF3YXdZRFZSMGZCR1F3WWpCZ29GNmdYSVphYUhSMGNITTZMeTloY0drdWRISjFjM1JsWkhObApjblpwWTJWekxtbHVkR1ZzTG1OdmJTOXpaM2d2WTJWeWRHbG1hV05oZEdsdmJpOTJNeTl3WTJ0amNtdy9ZMkU5CmNHeGhkR1p2Y20wbVpXNWpiMlJwYm1jOVpHVnlNQjBHQTFVZERnUVdCQlR5Q3pNeXVLSmk3OVM5VU5rN2czR2QKbG4zQ2t6QU9CZ05WSFE4QkFmOEVCQU1DQnNBd0RBWURWUjBUQVFIL0JBSXdBRENDQWpzR0NTcUdTSWI0VFFFTgpBUVNDQWl3d2dnSW9NQjRHQ2lxR1NJYjRUUUVOQVFFRUVMS2FER0hPNTN2RWt2aXgySUFBUkFRd2dnRmxCZ29xCmhraUcrRTBCRFFFQ01JSUJWVEFRQmdzcWhraUcrRTBCRFFFQ0FRSUJDekFRQmdzcWhraUcrRTBCRFFFQ0FnSUIKQ3pBUUJnc3Foa2lHK0UwQkRRRUNBd0lCQXpBUUJnc3Foa2lHK0UwQkRRRUNCQUlCQXpBUkJnc3Foa2lHK0UwQgpEUUVDQlFJQ0FQOHdFUVlMS29aSWh2aE5BUTBCQWdZQ0FnRC9NQkFHQ3lxR1NJYjRUUUVOQVFJSEFnRUJNQkFHCkN5cUdTSWI0VFFFTkFRSUlBZ0VBTUJBR0N5cUdTSWI0VFFFTkFRSUpBZ0VBTUJBR0N5cUdTSWI0VFFFTkFRSUsKQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlMQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlNQWdFQU1CQUdDeXFHU0liNApUUUVOQVFJTkFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJT0FnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJUEFnRUFNQkFHCkN5cUdTSWI0VFFFTkFRSVFBZ0VBTUJBR0N5cUdTSWI0VFFFTkFRSVJBZ0VOTUI4R0N5cUdTSWI0VFFFTkFRSVMKQkJBTEN3TUQvLzhCQUFBQUFBQUFBQUFBTUJBR0NpcUdTSWI0VFFFTkFRTUVBZ0FBTUJRR0NpcUdTSWI0VFFFTgpBUVFFQmdCZ2FnQUFBREFQQmdvcWhraUcrRTBCRFFFRkNnRUJNQjRHQ2lxR1NJYjRUUUVOQVFZRUVJYkMrdS9CCnBVcXljUjhQbWQ4V3lsMHdSQVlLS29aSWh2aE5BUTBCQnpBMk1CQUdDeXFHU0liNFRRRU5BUWNCQVFIL01CQUcKQ3lxR1NJYjRUUUVOQVFjQ0FRRUFNQkFHQ3lxR1NJYjRUUUVOQVFjREFRRUFNQW9HQ0NxR1NNNDlCQU1DQTBnQQpNRVVDSVFEZG5VRFRnajllTitpWENvMStBTnZLN0NoYmFQRlA2em5NM1FDeWN5SlNQd0lnTE5sV1hhWmlHTFVJCkZkd1VaWEVPTldrZjdrc1Nsek15TFpCRVVwWWRvU289Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNsakNDQWoyZ0F3SUJBZ0lWQUpWdlhjMjlHK0hwUUVuSjFQUXp6Z0ZYQzk1VU1Bb0dDQ3FHU000OUJBTUMKTUdneEdqQVlCZ05WQkFNTUVVbHVkR1ZzSUZOSFdDQlNiMjkwSUVOQk1Sb3dHQVlEVlFRS0RCRkpiblJsYkNCRApiM0p3YjNKaGRHbHZiakVVTUJJR0ExVUVCd3dMVTJGdWRHRWdRMnhoY21FeEN6QUpCZ05WQkFnTUFrTkJNUXN3CkNRWURWUVFHRXdKVlV6QWVGdzB4T0RBMU1qRXhNRFV3TVRCYUZ3MHpNekExTWpFeE1EVXdNVEJhTUhBeElqQWcKQmdOVkJBTU1HVWx1ZEdWc0lGTkhXQ0JRUTBzZ1VHeGhkR1p2Y20wZ1EwRXhHakFZQmdOVkJBb01FVWx1ZEdWcwpJRU52Y25CdmNtRjBhVzl1TVJRd0VnWURWUVFIREF0VFlXNTBZU0JEYkdGeVlURUxNQWtHQTFVRUNBd0NRMEV4CkN6QUpCZ05WQkFZVEFsVlRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVOU0IvN3QyMWxYU08KMkN1enB4dzc0ZUpCNzJFeURHZ1c1clhDdHgydFZUTHE2aEtrNnorVWlSWkNucVI3cHNPdmdxRmVTeGxtVGxKbAplVG1pMldZejNxT0J1ekNCdURBZkJnTlZIU01FR0RBV2dCUWlaUXpXV3AwMGlmT0R0SlZTdjFBYk9TY0dyREJTCkJnTlZIUjhFU3pCSk1FZWdSYUJEaGtGb2RIUndjem92TDJObGNuUnBabWxqWVhSbGN5NTBjblZ6ZEdWa2MyVnkKZG1salpYTXVhVzUwWld3dVkyOXRMMGx1ZEdWc1UwZFlVbTl2ZEVOQkxtUmxjakFkQmdOVkhRNEVGZ1FVbFc5ZAp6YjBiNGVsQVNjblU5RFBPQVZjTDNsUXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CSUdBMVVkRXdFQi93UUlNQVlCCkFmOENBUUF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWHNWa2kwdytpNlZZR1czVUYvMjJ1YVhlMFlKRGoxVWUKbkErVGpEMWFpNWNDSUNZYjFTQW1ENXhrZlRWcHZvNFVveWlTWXhyRFdMbVVSNENJOU5LeWZQTisKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ2p6Q0NBalNnQXdJQkFnSVVJbVVNMWxxZE5JbnpnN1NWVXI5UUd6a25CcXd3Q2dZSUtvWkl6ajBFQXdJdwphREVhTUJnR0ExVUVBd3dSU1c1MFpXd2dVMGRZSUZKdmIzUWdRMEV4R2pBWUJnTlZCQW9NRVVsdWRHVnNJRU52CmNuQnZjbUYwYVc5dU1SUXdFZ1lEVlFRSERBdFRZVzUwWVNCRGJHRnlZVEVMTUFrR0ExVUVDQXdDUTBFeEN6QUoKQmdOVkJBWVRBbFZUTUI0WERURTRNRFV5TVRFd05EVXhNRm9YRFRRNU1USXpNVEl6TlRrMU9Wb3dhREVhTUJnRwpBMVVFQXd3UlNXNTBaV3dnVTBkWUlGSnZiM1FnUTBFeEdqQVlCZ05WQkFvTUVVbHVkR1ZzSUVOdmNuQnZjbUYwCmFXOXVNUlF3RWdZRFZRUUhEQXRUWVc1MFlTQkRiR0Z5WVRFTE1Ba0dBMVVFQ0F3Q1EwRXhDekFKQmdOVkJBWVQKQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUM2bkV3TURJWVpPai9pUFdzQ3phRUtpNwoxT2lPU0xSRmhXR2pibkJWSmZWbmtZNHUzSWprRFlZTDBNeE80bXFzeVlqbEJhbFRWWXhGUDJzSkJLNXpsS09CCnV6Q0J1REFmQmdOVkhTTUVHREFXZ0JRaVpReldXcDAwaWZPRHRKVlN2MUFiT1NjR3JEQlNCZ05WSFI4RVN6QkoKTUVlZ1JhQkRoa0ZvZEhSd2N6b3ZMMk5sY25ScFptbGpZWFJsY3k1MGNuVnpkR1ZrYzJWeWRtbGpaWE11YVc1MApaV3d1WTI5dEwwbHVkR1ZzVTBkWVVtOXZkRU5CTG1SbGNqQWRCZ05WSFE0RUZnUVVJbVVNMWxxZE5JbnpnN1NWClVyOVFHemtuQnF3d0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFFd0NnWUkKS29aSXpqMEVBd0lEU1FBd1JnSWhBT1cvNVFrUitTOUNpU0RjTm9vd0x1UFJMc1dHZi9ZaTdHU1g5NEJnd1R3ZwpBaUVBNEowbHJIb01zK1hvNW8vc1g2TzlRV3hIUkF2WlVHT2RSUTdjdnFSWGFxST0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoA\",\"isvEnclaveQuoteStatus\":\"OK\",\"timestamp\":\"2023-06-28T02:11:40\"}|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"
}

If the status code is not success, then error will be returned in result. The attestation is used to prove that Sibyl is running in a secure environment. It's a string with the format <att>|<sig>|<cert>. <att> is an escaped JSON containing the fields id, isvEnclaveQuoteBody, isvEnclaveQuoteStatus, and timestamp. <sig> is a based64 signature signed with <cert>. <cert> is the base64 certificate. The result is a string of escaped JSON like the following: "result": "{\"public_token\":\"public-sandbox-932322e9-3aec-4138-98da-0099b90f72f4\",\"request_id\":\"MKd6hWIAZcjMrQ0\"}". But in different APIs, the result will be different and not necessari a string of escaped JSON.

Last updated