Creates a new schema object that is written to the ledger

        :param source_id: Institution's unique ID for the schema
        :param name: Name of schema
        :param version: Version of the schema
        :param attrs: Atttributes of the schema
        :param payment_handle: NYI - payment of ledger fee is taken from wallet automatically
        Example:
        source_id = 'foobar123'
        name = 'Address Schema'
        version = '1.0'
        attrs = ['address', 'city', 'state']
        payment_handle = 0
        schema = await Schema.create(source_id, name, version, attrs, payment_handle)
        :return: schema object, written to ledger

async def create(source_id: str, name: str, version: str, attrs: list, payment_handle: int):
        """
        Creates a new schema object that is written to the ledger

        :param source_id: Institution's unique ID for the schema
        :param name: Name of schema
        :param version: Version of the schema
        :param attrs: Atttributes of the schema
        :param payment_handle: NYI - payment of ledger fee is taken from wallet automatically
        Example:
        source_id = 'foobar123'
        name = 'Address Schema'
        version = '1.0'
        attrs = ['address', 'city', 'state']
        payment_handle = 0
        schema = await Schema.create(source_id, name, version, attrs, payment_handle)
        :return: schema object, written to ledger
        """
        constructor_params = (source_id, name, version, attrs)

        c_source_id = c_char_p(source_id.encode('utf-8'))
        c_name = c_char_p(name.encode('utf-8'))
        c_version = c_char_p(version.encode('utf-8'))
        c_schema_data = c_char_p(json.dumps(attrs).encode('utf-8'))
        c_payment = c_uint32(payment_handle)
        c_params = (c_source_id, c_name, c_version, c_schema_data, c_payment)

        schema = await Schema._create("vcx_schema_create", constructor_params, c_params)
        schema.schema_id = await schema.get_schema_id()
        return schema