<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sgmk-ssam.ch/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Abao</id>
	<title>SGMK-SSAM-WIKI - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sgmk-ssam.ch/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Abao"/>
	<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/wiki/Special:Contributions/Abao"/>
	<updated>2026-07-02T20:03:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13551</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13551"/>
		<updated>2025-10-17T06:27:43Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 討論 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
=摘要=&lt;br /&gt;
本實驗是在SGMAK Hacker-in-Residency Programme完成的可運作原型。太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO₂層經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋V，並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證，鏈上的驗證通過後，即在隨身聽上將V轉為可重現性的生成音樂。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在已完成的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學的視角下，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。目前本原型裡的聲音並非單純再現，而是將理論納入編曲設計裡做為導向與反思工具，將技術流程（量測、特徵提取、上鏈驗證）與哲學框架（感知、真實、幻覺）彼此連結。&lt;br /&gt;
&lt;br /&gt;
=實驗=&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個哈希運算（hash operation）來獲得每片太陽能玻璃的「聲紋 (V)」。哈希運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生哈希值的過程。哈希演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ml.scale 與 ml.principle 作為模糊提取的前處理===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==第二個原型v2：RAVE 作為中介層與模糊提取==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===I–V 編碼器訓練（鏈下===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
===模糊提取（鏈下）===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
===Panel ID 與註冊===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
===音訊解碼器（鏈下）===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
===可驗證語意空間 (VSP)===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==智慧合約驗證系統==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
===驗證流程（鏈上）===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
===Panel ID 與身份管理（鏈上觀點）===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
===安全機制===&lt;br /&gt;
&lt;br /&gt;
====EIP-712 結構化簽名====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====數據完整性檢查====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
===儲存結構===&lt;br /&gt;
&lt;br /&gt;
====測量記錄====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾哈希（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
===神諭機制（鏈上角色）===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑和兩種不同系統間的語義對齊翻譯工作。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|此圖例說明 Stinson（2020）所提出的「一般機制」概念：不同系統（如運算模型與人類認知）之間的可比擬性，不在於其表徵形式相同，而在於它們是否同屬某種抽象的機制範疇。這樣的視角為將生成藝術與認知系統彼此映射提供了正當性基礎。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=討論=&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 「太陽能神諭隨身聽」現階段是一件結合能源量測與聲音生成的藝術裝置。圖案化DSSC的I–V曲線被即時轉換為潛在聲音狀態，同時藉由模糊提取器產生可驗證的金鑰，上鏈註冊。此流程使聲音不僅是審美事件，也是一種能被追溯的能量標籤。作品由此強調「生成」與「驗證」的雙重面向：聲音保持創造性漂移，而oracle作為外部錨點，確保結果仍能回溯到具體的能源軌跡。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson（2020）的「一般機制」提供了比擬的框架，使得DSSC–oracle–聲音的生成過程能與人類感知機制相互映射：兩者皆屬於「生成系統」的實例。Andy Clark 的「預測式大腦」理論則幫助我們理解，作品中的聲音並非單純再現，而是經由「預測與誤差修正」而生成的幻象。這些理論視角並非最終結論，而是設計上的導向與反思工具，協助我們將技術流程（量測、特徵提取、上鏈驗證）與哲學框架（感知、真實、幻覺）彼此連結。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 接下來的挑戰在於擴充數據集與語意結構：建立在控制光照與溫度下的小型DSSC聲紋資料集，用以驗證再現性。探索如何在聲音潛在空間中保留「鄰近性」，使能源差異能對應聲音差異。評估模糊提取器的失效模式與防偽極限，並將聲紋哈希註冊為能源憑證。深化「oracle」的雙重含義：當它僅作為驗證機制時，是守門人；但若它能揭示曲線之間的結構性關聯並轉譯為聲音，便開始承擔古義上的「神諭」角色，將物理跡象轉換為另一世界的訊息。&lt;br /&gt;
#Solar Oracle Walkman 的核心並非音樂生成，而是以可重構 PUF 把材料的物理熵轉為一次性簽章，讓「哪一片、此時此地、實際產生的能量」被驗證並可共享。作品在秩序與隨機之間運作：既可被辨識、又不被單一模型吃透；它以 A/D 量化與情境綁定，將能源事實轉為可見的聲音與可驗證的資料。這不是追求盲目不可預測，而是為行動者騰出可自我修正、可改寫規則的空地——自由就活在「部分可預測＋策略性不可預測」的張力裡。&lt;br /&gt;
&lt;br /&gt;
=參考=&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13550</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13550"/>
		<updated>2025-10-17T03:57:48Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
This experiment was realized as a working prototype during the SGMAK Hacker-in-Residency Programme. The Solar Oracle Walkman is an exploration of energy trading and sound sculpture, adapted from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned by cyanotype or screen printing to deliberately introduce defects, generating a unique I–V voiceprint V. This voiceprint is submitted via an oracle, a mechanism that securely bridges off-chain data to the blockchain, to a smart contract for verification. Once verified on-chain, V is rendered on the Walkman as reproducible generative music.&lt;br /&gt;
The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment value. The panel_id can serve as an anchor for future tokenization. In the completed v1 prototype, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced with PCA, then manually mapped to the latent inlets of an independently trained nn~ RAVE decoder, producing reproducible sonic identity without explicit semantic structure.&lt;br /&gt;
In the planned v2 experiment, continuous I–V data under varied illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings for each cell. These embeddings will pass through an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hashing) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. If vector-space preservation (VSP) can be maintained, distances in the latent space will reflect differences in photovoltaic behavior, establishing a richer semantic space.&lt;br /&gt;
From artistic and philosophical perspectives, this “divinatory machine” links the physical and informational worlds, exploring the distillation and realization of “truth” through the lenses of philosophy of perception and blockchain. Currently the sound in this prototyping is not a mere reproduction: theoretical frameworks are integrated into composition as guides and reflective tools, linking technical processes (measurement, feature extraction, on-chain verification) with philosophical frameworks (perception, reality, hallucination).&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;). The contract functions as a decentralized digital notary, responsible for: verifying signatures and data integrity (EIP-712), managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, storing and publishing commitments and metadata associated with I–V voiceprints. Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE. Download the related code on [https://github.com/shihweichieh2023/solar-oracle-walkman GitHub] here.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Truth-sonified Sculpture: on the similarity between perception and computation as generative Systems=&lt;br /&gt;
Driven by the motivation of energy traceability, this experiment attempts to materialize “the real” and argues that it carries a dual sense: on the one hand, the truth/veracity of blockchain transactions—verifiable and tamper-proof; on the other hand, the reality/the real of perceptual philosophy—how we generate and experience reality itself. To support this view, we must discuss how conceptual models and analogical mechanisms are formed. Following Stinson (2020) on the notion of a generic mechanism, the comparability between computational models and human cognition does not lie in the similarity of their representations, but in whether both can be regarded as instances of an abstract category of mechanism. This provides a legitimate basis for designs that aim to map generative art and cognitive systems onto one another. Many studies already treat AI perception and human perception as two sides of the same process, redeveloping perceptual philosophy through the structure of generative models. For instance, Buckner (2023) proposes that human imagination and memory are closely related to the variational autoencoder (VAE). Andy Clark’s (2023) predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. In this framing, “reality” is not an objective given but a prediction generated by the brain—a controllable illusion. These theories provide a structural bridge for debates in philosophy of mind and philosophy of perception. However, the “reality” of perceptual philosophy and the truthfulness of measurable energy trajectories do not belong to the same ontological category, and thus cannot be straightforwardly juxtaposed within a single framework. Yet the operative mechanism of the artwork creates an initial common ground: the Solar Oracle Walkman can likewise be seen as a perceptual system. Through the oracle mechanism, it extracts “the real” from two worlds—intracranial/on-chain and extracranial/off-chain—while within its algorithms, prediction and error become tools for locating truth. “This sound originates from this solar cell, here and now, under these conditions.” Ultimately, the Solar Oracle Walkman evolves from an exercise in sonifying a traceable energy system into a generative musical sculpture grounded in the sonification of the real and the semantic alignment and translation work between two different systems. Conservatively, the project should still be regarded as an operational sketch of cognitive science, rather than a testable theory of consciousness; it remains at a considered distance from formal consciousness science and the philosophy of mind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|This diagram illustrates Stinson’s (2020) notion of a generic mechanism: the comparability between different systems (e.g., computational models and human cognition) does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This perspective provides a legitimate basis for mapping generative art and cognitive systems onto one another.&lt;br /&gt;
File:hallucinations RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; At its present stage, the Solar Oracle Walkman functions as an artistic device that fuses energy measurement with sound generation. The I–V curve of a patterned DSSC is mapped into a latent sonic state, while a fuzzy extractor produces a verifiable key for on-chain registration. In this way, sound becomes not only an aesthetic event but also a traceable energy label. The work emphasizes the dual nature of generation and verification: sound retains creative drift, while the oracle serves as an external anchor, ensuring that each sonic decision remains traceable to a concrete energy trajectory.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s (2020) notion of the generic mechanism provides a framework for analogy: both the DSSC–oracle–sound pipeline and human perception can be regarded as instances of generative systems. Andy Clark’s theory of the predictive brain further frames sound here not as mere reproduction but as a controllable illusion generated through prediction and error correction. These theoretical perspectives are not final claims but rather design heuristics and reflective tools, helping us connect technical processes (measurement, feature extraction, on-chain proof) with philosophical frameworks (perception, reality, hallucination).&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; The next challenges concern the expansion of data and semantic structure: Build a controlled dataset of DSSC voiceprints under varying light and temperature to test reproducibility. Explore how proximity in sonic latent space can correspond to proximity in energy curves. Assess the failure modes and anti-counterfeiting limits of the fuzzy extractor, registering voiceprint hashes as energy certificates. Deepen the dual meaning of the oracle: as long as it functions only as a verification gatekeeper, it merely authenticates; but once it begins to reveal structural relations between energy curves and translate them into sound, it takes on the ancient role of the oracle—transforming physical signs into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;br /&gt;
#“Blockchain Radio Access Network (B-RAN): Towards Decentralized Secure Radio Access Paradigm | IEEE Journals &amp;amp; Magazine | IEEE Xplore.” n.d. Accessed October 7, 2025. https://ieeexplore.ieee.org/abstract/document/8598796.&lt;br /&gt;
#Galanter, Philip. n.d. What Is Complexism? Generative Art and the Cultures of Science and the Humanities.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13549</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13549"/>
		<updated>2025-10-10T03:04:32Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
This experiment was realized as a working prototype during the SGMAK Hacker-in-Residency Programme. The Solar Oracle Walkman is an exploration of energy trading and sound sculpture, adapted from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned by cyanotype or screen printing to deliberately introduce defects, generating a unique I–V voiceprint V. This voiceprint is submitted via an oracle, a mechanism that securely bridges off-chain data to the blockchain, to a smart contract for verification. Once verified on-chain, V is rendered on the Walkman as reproducible generative music.&lt;br /&gt;
The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment value. The panel_id can serve as an anchor for future tokenization. In the completed v1 prototype, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced with PCA, then manually mapped to the latent inlets of an independently trained nn~ RAVE decoder, producing reproducible sonic identity without explicit semantic structure.&lt;br /&gt;
In the planned v2 experiment, continuous I–V data under varied illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings for each cell. These embeddings will pass through an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hashing) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. If vector-space preservation (VSP) can be maintained, distances in the latent space will reflect differences in photovoltaic behavior, establishing a richer semantic space.&lt;br /&gt;
From artistic and philosophical perspectives, this “divinatory machine” links the physical and informational worlds, exploring the distillation and realization of “truth” through the lenses of philosophy of perception and blockchain. Currently the sound in this prototyping is not a mere reproduction: theoretical frameworks are integrated into composition as guides and reflective tools, linking technical processes (measurement, feature extraction, on-chain verification) with philosophical frameworks (perception, reality, hallucination).&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;). The contract functions as a decentralized digital notary, responsible for: verifying signatures and data integrity (EIP-712), managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, storing and publishing commitments and metadata associated with I–V voiceprints. Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE. Download the related code on [https://github.com/shihweichieh2023/solar-oracle-walkman GitHub] here.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Truth-sonified Sculpture: on the similarity between perception and computation as generative Systems=&lt;br /&gt;
Driven by the motivation of energy traceability, this experiment attempts to materialize “the real” and argues that it carries a dual sense: on the one hand, the truth/veracity of blockchain transactions—verifiable and tamper-proof; on the other hand, the reality/the real of perceptual philosophy—how we generate and experience reality itself. To support this view, we must discuss how conceptual models and analogical mechanisms are formed. Following Stinson (2020) on the notion of a generic mechanism, the comparability between computational models and human cognition does not lie in the similarity of their representations, but in whether both can be regarded as instances of an abstract category of mechanism. This provides a legitimate basis for designs that aim to map generative art and cognitive systems onto one another. Many studies already treat AI perception and human perception as two sides of the same process, redeveloping perceptual philosophy through the structure of generative models. For instance, Buckner (2023) proposes that human imagination and memory are closely related to the variational autoencoder (VAE). Andy Clark’s (2023) predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. In this framing, “reality” is not an objective given but a prediction generated by the brain—a controllable illusion. These theories provide a structural bridge for debates in philosophy of mind and philosophy of perception. However, the “reality” of perceptual philosophy and the truthfulness of measurable energy trajectories do not belong to the same ontological category, and thus cannot be straightforwardly juxtaposed within a single framework. Yet the operative mechanism of the artwork creates an initial common ground: the Solar Oracle Walkman can likewise be seen as a perceptual system. Through the oracle mechanism, it extracts “the real” from two worlds—intracranial/on-chain and extracranial/off-chain—while within its algorithms, prediction and error become tools for locating truth. “This sound originates from this solar cell, here and now, under these conditions.” Ultimately, the Solar Oracle Walkman evolves from an exercise in sonifying a traceable energy system into a generative musical sculpture grounded in the sonification of the real and the semantic alignment and translation work between two different systems. Conservatively, the project should still be regarded as an operational sketch of cognitive science, rather than a testable theory of consciousness; it remains at a considered distance from formal consciousness science and the philosophy of mind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|This diagram illustrates Stinson’s (2020) notion of a generic mechanism: the comparability between different systems (e.g., computational models and human cognition) does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This perspective provides a legitimate basis for mapping generative art and cognitive systems onto one another.&lt;br /&gt;
File:hallucinations RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; At its present stage, the Solar Oracle Walkman functions as an artistic device that fuses energy measurement with sound generation. The I–V curve of a patterned DSSC is mapped into a latent sonic state, while a fuzzy extractor produces a verifiable key for on-chain registration. In this way, sound becomes not only an aesthetic event but also a traceable energy label. The work emphasizes the dual nature of generation and verification: sound retains creative drift, while the oracle serves as an external anchor, ensuring that each sonic decision remains traceable to a concrete energy trajectory.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s (2020) notion of the generic mechanism provides a framework for analogy: both the DSSC–oracle–sound pipeline and human perception can be regarded as instances of generative systems. Andy Clark’s theory of the predictive brain further frames sound here not as mere reproduction but as a controllable illusion generated through prediction and error correction. These theoretical perspectives are not final claims but rather design heuristics and reflective tools, helping us connect technical processes (measurement, feature extraction, on-chain proof) with philosophical frameworks (perception, reality, hallucination).&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; The next challenges concern the expansion of data and semantic structure: Build a controlled dataset of DSSC voiceprints under varying light and temperature to test reproducibility. Explore how proximity in sonic latent space can correspond to proximity in energy curves. Assess the failure modes and anti-counterfeiting limits of the fuzzy extractor, registering voiceprint hashes as energy certificates. Deepen the dual meaning of the oracle: as long as it functions only as a verification gatekeeper, it merely authenticates; but once it begins to reveal structural relations between energy curves and translate them into sound, it takes on the ancient role of the oracle—transforming physical signs into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;br /&gt;
#“Blockchain Radio Access Network (B-RAN): Towards Decentralized Secure Radio Access Paradigm | IEEE Journals &amp;amp; Magazine | IEEE Xplore.” n.d. Accessed October 7, 2025. https://ieeexplore.ieee.org/abstract/document/8598796.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13494</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13494"/>
		<updated>2025-09-07T16:24:42Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 摘要 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
=摘要=&lt;br /&gt;
本實驗是在SGMAK Hacker-in-Residency Programme完成的可運作原型。太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO₂層經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋V，並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證，鏈上的驗證通過後，即在隨身聽上將V轉為可重現性的生成音樂。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在已完成的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學的視角下，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。目前本原型裡的聲音並非單純再現，而是將理論納入編曲設計裡做為導向與反思工具，將技術流程（量測、特徵提取、上鏈驗證）與哲學框架（感知、真實、幻覺）彼此連結。&lt;br /&gt;
&lt;br /&gt;
=實驗=&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個哈希運算（hash operation）來獲得每片太陽能玻璃的「聲紋 (V)」。哈希運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生哈希值的過程。哈希演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ml.scale 與 ml.principle 作為模糊提取的前處理===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==第二個原型v2：RAVE 作為中介層與模糊提取==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===I–V 編碼器訓練（鏈下===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
===模糊提取（鏈下）===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
===Panel ID 與註冊===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
===音訊解碼器（鏈下）===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
===可驗證語意空間 (VSP)===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==智慧合約驗證系統==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
===驗證流程（鏈上）===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
===Panel ID 與身份管理（鏈上觀點）===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
===安全機制===&lt;br /&gt;
&lt;br /&gt;
====EIP-712 結構化簽名====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====數據完整性檢查====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
===儲存結構===&lt;br /&gt;
&lt;br /&gt;
====測量記錄====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾哈希（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
===神諭機制（鏈上角色）===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑和兩種不同系統間的語義對齊翻譯工作。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|此圖例說明 Stinson（2020）所提出的「一般機制」概念：不同系統（如運算模型與人類認知）之間的可比擬性，不在於其表徵形式相同，而在於它們是否同屬某種抽象的機制範疇。這樣的視角為將生成藝術與認知系統彼此映射提供了正當性基礎。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=討論=&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 「太陽能神諭隨身聽」現階段是一件結合能源量測與聲音生成的藝術裝置。圖案化DSSC的I–V曲線被即時轉換為潛在聲音狀態，同時藉由模糊提取器產生可驗證的金鑰，上鏈註冊。此流程使聲音不僅是審美事件，也是一種能被追溯的能量標籤。作品由此強調「生成」與「驗證」的雙重面向：聲音保持創造性漂移，而oracle作為外部錨點，確保結果仍能回溯到具體的能源軌跡。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson（2020）的「一般機制」提供了比擬的框架，使得DSSC–oracle–聲音的生成過程能與人類感知機制相互映射：兩者皆屬於「生成系統」的實例。Andy Clark 的「預測式大腦」理論則幫助我們理解，作品中的聲音並非單純再現，而是經由「預測與誤差修正」而生成的幻象。這些理論視角並非最終結論，而是設計上的導向與反思工具，協助我們將技術流程（量測、特徵提取、上鏈驗證）與哲學框架（感知、真實、幻覺）彼此連結。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 接下來的挑戰在於擴充數據集與語意結構：建立在控制光照與溫度下的小型DSSC聲紋資料集，用以驗證再現性。探索如何在聲音潛在空間中保留「鄰近性」，使能源差異能對應聲音差異。評估模糊提取器的失效模式與防偽極限，並將聲紋哈希註冊為能源憑證。深化「oracle」的雙重含義：當它僅作為驗證機制時，是守門人；但若它能揭示曲線之間的結構性關聯並轉譯為聲音，便開始承擔古義上的「神諭」角色，將物理跡象轉換為另一世界的訊息。&lt;br /&gt;
&lt;br /&gt;
=參考=&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13493</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13493"/>
		<updated>2025-09-07T16:23:55Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* Abstract */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
This experiment was realized as a working prototype during the SGMAK Hacker-in-Residency Programme. The Solar Oracle Walkman is an exploration of energy trading and sound sculpture, adapted from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned by cyanotype or screen printing to deliberately introduce defects, generating a unique I–V voiceprint V. This voiceprint is submitted via an oracle, a mechanism that securely bridges off-chain data to the blockchain, to a smart contract for verification. Once verified on-chain, V is rendered on the Walkman as reproducible generative music.&lt;br /&gt;
The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment value. The panel_id can serve as an anchor for future tokenization. In the completed v1 prototype, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced with PCA, then manually mapped to the latent inlets of an independently trained nn~ RAVE decoder, producing reproducible sonic identity without explicit semantic structure.&lt;br /&gt;
In the planned v2 experiment, continuous I–V data under varied illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings for each cell. These embeddings will pass through an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hashing) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. If vector-space preservation (VSP) can be maintained, distances in the latent space will reflect differences in photovoltaic behavior, establishing a richer semantic space.&lt;br /&gt;
From artistic and philosophical perspectives, this “divinatory machine” links the physical and informational worlds, exploring the distillation and realization of “truth” through the lenses of philosophy of perception and blockchain. Currently the sound in this prototyping is not a mere reproduction: theoretical frameworks are integrated into composition as guides and reflective tools, linking technical processes (measurement, feature extraction, on-chain verification) with philosophical frameworks (perception, reality, hallucination).&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;). The contract functions as a decentralized digital notary, responsible for: verifying signatures and data integrity (EIP-712), managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, storing and publishing commitments and metadata associated with I–V voiceprints. Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE. Download the related code on [https://github.com/shihweichieh2023/solar-oracle-walkman GitHub] here.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Truth-sonified Sculpture: on the similarity between perception and computation as generative Systems=&lt;br /&gt;
Driven by the motivation of energy traceability, this experiment attempts to materialize “the real” and argues that it carries a dual sense: on the one hand, the truth/veracity of blockchain transactions—verifiable and tamper-proof; on the other hand, the reality/the real of perceptual philosophy—how we generate and experience reality itself. To support this view, we must discuss how conceptual models and analogical mechanisms are formed. Following Stinson (2020) on the notion of a generic mechanism, the comparability between computational models and human cognition does not lie in the similarity of their representations, but in whether both can be regarded as instances of an abstract category of mechanism. This provides a legitimate basis for designs that aim to map generative art and cognitive systems onto one another. Many studies already treat AI perception and human perception as two sides of the same process, redeveloping perceptual philosophy through the structure of generative models. For instance, Buckner (2023) proposes that human imagination and memory are closely related to the variational autoencoder (VAE). Andy Clark’s (2023) predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. In this framing, “reality” is not an objective given but a prediction generated by the brain—a controllable illusion. These theories provide a structural bridge for debates in philosophy of mind and philosophy of perception. However, the “reality” of perceptual philosophy and the truthfulness of measurable energy trajectories do not belong to the same ontological category, and thus cannot be straightforwardly juxtaposed within a single framework. Yet the operative mechanism of the artwork creates an initial common ground: the Solar Oracle Walkman can likewise be seen as a perceptual system. Through the oracle mechanism, it extracts “the real” from two worlds—intracranial/on-chain and extracranial/off-chain—while within its algorithms, prediction and error become tools for locating truth. “This sound originates from this solar cell, here and now, under these conditions.” Ultimately, the Solar Oracle Walkman evolves from an exercise in sonifying a traceable energy system into a generative musical sculpture grounded in the sonification of the real and the semantic alignment and translation work between two different systems. Conservatively, the project should still be regarded as an operational sketch of cognitive science, rather than a testable theory of consciousness; it remains at a considered distance from formal consciousness science and the philosophy of mind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|This diagram illustrates Stinson’s (2020) notion of a generic mechanism: the comparability between different systems (e.g., computational models and human cognition) does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This perspective provides a legitimate basis for mapping generative art and cognitive systems onto one another.&lt;br /&gt;
File:hallucinations RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; At its present stage, the Solar Oracle Walkman functions as an artistic device that fuses energy measurement with sound generation. The I–V curve of a patterned DSSC is mapped into a latent sonic state, while a fuzzy extractor produces a verifiable key for on-chain registration. In this way, sound becomes not only an aesthetic event but also a traceable energy label. The work emphasizes the dual nature of generation and verification: sound retains creative drift, while the oracle serves as an external anchor, ensuring that each sonic decision remains traceable to a concrete energy trajectory.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s (2020) notion of the generic mechanism provides a framework for analogy: both the DSSC–oracle–sound pipeline and human perception can be regarded as instances of generative systems. Andy Clark’s theory of the predictive brain further frames sound here not as mere reproduction but as a controllable illusion generated through prediction and error correction. These theoretical perspectives are not final claims but rather design heuristics and reflective tools, helping us connect technical processes (measurement, feature extraction, on-chain proof) with philosophical frameworks (perception, reality, hallucination).&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; The next challenges concern the expansion of data and semantic structure: Build a controlled dataset of DSSC voiceprints under varying light and temperature to test reproducibility. Explore how proximity in sonic latent space can correspond to proximity in energy curves. Assess the failure modes and anti-counterfeiting limits of the fuzzy extractor, registering voiceprint hashes as energy certificates. Deepen the dual meaning of the oracle: as long as it functions only as a verification gatekeeper, it merely authenticates; but once it begins to reveal structural relations between energy curves and translate them into sound, it takes on the ancient role of the oracle—transforming physical signs into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13492</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13492"/>
		<updated>2025-09-07T16:21:05Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 摘要 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
=摘要=&lt;br /&gt;
本實驗是在SGMAK Hacker-in-Residency Programme完成的可運作原型。太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO₂層經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋V，並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證，鏈上的驗證通過後，即在隨身聽上將V轉為可重現性的生成音樂。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在已完成的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學的視角下，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。本研究中的聲音並非單純再現，也嘗試將理論納入編曲設計裡做為導向與反思工具，將技術流程（量測、特徵提取、上鏈驗證）與哲學框架（感知、真實、幻覺）彼此連結。&lt;br /&gt;
&lt;br /&gt;
=實驗=&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個哈希運算（hash operation）來獲得每片太陽能玻璃的「聲紋 (V)」。哈希運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生哈希值的過程。哈希演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ml.scale 與 ml.principle 作為模糊提取的前處理===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==第二個原型v2：RAVE 作為中介層與模糊提取==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===I–V 編碼器訓練（鏈下===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
===模糊提取（鏈下）===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
===Panel ID 與註冊===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
===音訊解碼器（鏈下）===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
===可驗證語意空間 (VSP)===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==智慧合約驗證系統==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
===驗證流程（鏈上）===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
===Panel ID 與身份管理（鏈上觀點）===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
===安全機制===&lt;br /&gt;
&lt;br /&gt;
====EIP-712 結構化簽名====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====數據完整性檢查====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
===儲存結構===&lt;br /&gt;
&lt;br /&gt;
====測量記錄====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾哈希（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
===神諭機制（鏈上角色）===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑和兩種不同系統間的語義對齊翻譯工作。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|此圖例說明 Stinson（2020）所提出的「一般機制」概念：不同系統（如運算模型與人類認知）之間的可比擬性，不在於其表徵形式相同，而在於它們是否同屬某種抽象的機制範疇。這樣的視角為將生成藝術與認知系統彼此映射提供了正當性基礎。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=討論=&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 「太陽能神諭隨身聽」現階段是一件結合能源量測與聲音生成的藝術裝置。圖案化DSSC的I–V曲線被即時轉換為潛在聲音狀態，同時藉由模糊提取器產生可驗證的金鑰，上鏈註冊。此流程使聲音不僅是審美事件，也是一種能被追溯的能量標籤。作品由此強調「生成」與「驗證」的雙重面向：聲音保持創造性漂移，而oracle作為外部錨點，確保結果仍能回溯到具體的能源軌跡。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson（2020）的「一般機制」提供了比擬的框架，使得DSSC–oracle–聲音的生成過程能與人類感知機制相互映射：兩者皆屬於「生成系統」的實例。Andy Clark 的「預測式大腦」理論則幫助我們理解，作品中的聲音並非單純再現，而是經由「預測與誤差修正」而生成的幻象。這些理論視角並非最終結論，而是設計上的導向與反思工具，協助我們將技術流程（量測、特徵提取、上鏈驗證）與哲學框架（感知、真實、幻覺）彼此連結。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 接下來的挑戰在於擴充數據集與語意結構：建立在控制光照與溫度下的小型DSSC聲紋資料集，用以驗證再現性。探索如何在聲音潛在空間中保留「鄰近性」，使能源差異能對應聲音差異。評估模糊提取器的失效模式與防偽極限，並將聲紋哈希註冊為能源憑證。深化「oracle」的雙重含義：當它僅作為驗證機制時，是守門人；但若它能揭示曲線之間的結構性關聯並轉譯為聲音，便開始承擔古義上的「神諭」角色，將物理跡象轉換為另一世界的訊息。&lt;br /&gt;
&lt;br /&gt;
=參考=&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13491</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13491"/>
		<updated>2025-09-07T16:03:34Z</updated>

		<summary type="html">&lt;p&gt;Abao: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
=摘要=&lt;br /&gt;
本實驗是在SGMAK Hacker-in-Residency Programme完成的可運作原型。太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO₂層經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋V，並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證，鏈上的驗證通過後，即在隨身聽上將V轉為可重現性的生成音樂。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在已完成的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
=實驗=&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個哈希運算（hash operation）來獲得每片太陽能玻璃的「聲紋 (V)」。哈希運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生哈希值的過程。哈希演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ml.scale 與 ml.principle 作為模糊提取的前處理===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==第二個原型v2：RAVE 作為中介層與模糊提取==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===I–V 編碼器訓練（鏈下===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
===模糊提取（鏈下）===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
===Panel ID 與註冊===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
===音訊解碼器（鏈下）===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
===可驗證語意空間 (VSP)===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==智慧合約驗證系統==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
===驗證流程（鏈上）===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
===Panel ID 與身份管理（鏈上觀點）===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
===安全機制===&lt;br /&gt;
&lt;br /&gt;
====EIP-712 結構化簽名====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====數據完整性檢查====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
===儲存結構===&lt;br /&gt;
&lt;br /&gt;
====測量記錄====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾哈希（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
===神諭機制（鏈上角色）===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑和兩種不同系統間的語義對齊翻譯工作。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|此圖例說明 Stinson（2020）所提出的「一般機制」概念：不同系統（如運算模型與人類認知）之間的可比擬性，不在於其表徵形式相同，而在於它們是否同屬某種抽象的機制範疇。這樣的視角為將生成藝術與認知系統彼此映射提供了正當性基礎。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=討論=&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 「太陽能神諭隨身聽」現階段是一件結合能源量測與聲音生成的藝術裝置。圖案化DSSC的I–V曲線被即時轉換為潛在聲音狀態，同時藉由模糊提取器產生可驗證的金鑰，上鏈註冊。此流程使聲音不僅是審美事件，也是一種能被追溯的能量標籤。作品由此強調「生成」與「驗證」的雙重面向：聲音保持創造性漂移，而oracle作為外部錨點，確保結果仍能回溯到具體的能源軌跡。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson（2020）的「一般機制」提供了比擬的框架，使得DSSC–oracle–聲音的生成過程能與人類感知機制相互映射：兩者皆屬於「生成系統」的實例。Andy Clark 的「預測式大腦」理論則幫助我們理解，作品中的聲音並非單純再現，而是經由「預測與誤差修正」而生成的幻象。這些理論視角並非最終結論，而是設計上的導向與反思工具，協助我們將技術流程（量測、特徵提取、上鏈驗證）與哲學框架（感知、真實、幻覺）彼此連結。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 接下來的挑戰在於擴充數據集與語意結構：建立在控制光照與溫度下的小型DSSC聲紋資料集，用以驗證再現性。探索如何在聲音潛在空間中保留「鄰近性」，使能源差異能對應聲音差異。評估模糊提取器的失效模式與防偽極限，並將聲紋哈希註冊為能源憑證。深化「oracle」的雙重含義：當它僅作為驗證機制時，是守門人；但若它能揭示曲線之間的結構性關聯並轉譯為聲音，便開始承擔古義上的「神諭」角色，將物理跡象轉換為另一世界的訊息。&lt;br /&gt;
&lt;br /&gt;
=參考=&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13490</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13490"/>
		<updated>2025-09-07T15:58:14Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 討論 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
本實驗是在SGMAK Hacker-in-Residency Programme完成的可運作原型。太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在已完成的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個哈希運算（hash operation）來獲得每片太陽能玻璃的「聲紋 (V)」。哈希運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生哈希值的過程。哈希演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾哈希（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑和兩種不同系統間的語義對齊翻譯工作。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|此圖例說明 Stinson（2020）所提出的「一般機制」概念：不同系統（如運算模型與人類認知）之間的可比擬性，不在於其表徵形式相同，而在於它們是否同屬某種抽象的機制範疇。這樣的視角為將生成藝術與認知系統彼此映射提供了正當性基礎。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 「太陽能神諭隨身聽」現階段是一件結合能源量測與聲音生成的藝術裝置。圖案化DSSC的I–V曲線被即時轉換為潛在聲音狀態，同時藉由模糊提取器產生可驗證的金鑰，上鏈註冊。此流程使聲音不僅是審美事件，也是一種能被追溯的能量標籤。作品由此強調「生成」與「驗證」的雙重面向：聲音保持創造性漂移，而oracle作為外部錨點，確保結果仍能回溯到具體的能源軌跡。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson（2020）的「一般機制」提供了比擬的框架，使得DSSC–oracle–聲音的生成過程能與人類感知機制相互映射：兩者皆屬於「生成系統」的實例。Andy Clark 的「預測式大腦」理論則幫助我們理解，作品中的聲音並非單純再現，而是經由「預測與誤差修正」而生成的幻象。這些理論視角並非最終結論，而是設計上的導向與反思工具，協助我們將技術流程（量測、特徵提取、上鏈驗證）與哲學框架（感知、真實、幻覺）彼此連結。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 接下來的挑戰在於擴充數據集與語意結構：建立在控制光照與溫度下的小型DSSC聲紋資料集，用以驗證再現性。探索如何在聲音潛在空間中保留「鄰近性」，使能源差異能對應聲音差異。評估模糊提取器的失效模式與防偽極限，並將聲紋哈希註冊為能源憑證。深化「oracle」的雙重含義：當它僅作為驗證機制時，是守門人；但若它能揭示曲線之間的結構性關聯並轉譯為聲音，便開始承擔古義上的「神諭」角色，將物理跡象轉換為另一世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13489</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13489"/>
		<updated>2025-09-07T15:57:34Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 測量記錄 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
本實驗是在SGMAK Hacker-in-Residency Programme完成的可運作原型。太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在已完成的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個哈希運算（hash operation）來獲得每片太陽能玻璃的「聲紋 (V)」。哈希運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生哈希值的過程。哈希演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾哈希（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑和兩種不同系統間的語義對齊翻譯工作。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|此圖例說明 Stinson（2020）所提出的「一般機制」概念：不同系統（如運算模型與人類認知）之間的可比擬性，不在於其表徵形式相同，而在於它們是否同屬某種抽象的機制範疇。這樣的視角為將生成藝術與認知系統彼此映射提供了正當性基礎。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 「太陽能神諭隨身聽」現階段是一件結合能源量測與聲音生成的藝術裝置。圖案化 DSSC 的 I–V 曲線被即時轉換為潛在聲音狀態，同時藉由模糊提取器產生可驗證的金鑰，上鏈註冊。此流程使聲音不僅是審美事件，也是一種能被追溯的能量標籤。作品由此強調「生成」與「驗證」的雙重面向：聲音保持創造性漂移，而 oracle 作為外部錨點，確保結果仍能回溯到具體的能源軌跡。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson（2020）的「一般機制」提供了比擬的框架，使得 DSSC–oracle–聲音的生成過程能與人類感知機制相互映射：兩者皆屬於「生成系統」的實例。Andy Clark 的「預測式大腦」理論則幫助我們理解，作品中的聲音並非單純再現，而是經由「預測與誤差修正」而生成的幻象。這些理論視角並非最終結論，而是設計上的導向與反思工具，協助我們將技術流程（量測、特徵提取、上鏈驗證）與哲學框架（感知、真實、幻覺）彼此連結。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 接下來的挑戰在於擴充數據集與語意結構：建立在控制光照與溫度下的小型 DSSC 聲紋資料集，用以驗證再現性。探索如何在聲音潛在空間中保留「鄰近性」，使能源差異能對應聲音差異。評估模糊提取器的失效模式與防偽極限，並將聲紋雜湊註冊為能源憑證。深化「oracle」的雙重含義：當它僅作為驗證機制時，是守門人；但若它能揭示曲線之間的結構性關聯並轉譯為聲音，便開始承擔古義上的「神諭」角色，將物理跡象轉換為另一世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13488</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13488"/>
		<updated>2025-09-07T15:57:10Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 實驗 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
本實驗是在SGMAK Hacker-in-Residency Programme完成的可運作原型。太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在已完成的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個哈希運算（hash operation）來獲得每片太陽能玻璃的「聲紋 (V)」。哈希運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生哈希值的過程。哈希演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑和兩種不同系統間的語義對齊翻譯工作。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|此圖例說明 Stinson（2020）所提出的「一般機制」概念：不同系統（如運算模型與人類認知）之間的可比擬性，不在於其表徵形式相同，而在於它們是否同屬某種抽象的機制範疇。這樣的視角為將生成藝術與認知系統彼此映射提供了正當性基礎。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 「太陽能神諭隨身聽」現階段是一件結合能源量測與聲音生成的藝術裝置。圖案化 DSSC 的 I–V 曲線被即時轉換為潛在聲音狀態，同時藉由模糊提取器產生可驗證的金鑰，上鏈註冊。此流程使聲音不僅是審美事件，也是一種能被追溯的能量標籤。作品由此強調「生成」與「驗證」的雙重面向：聲音保持創造性漂移，而 oracle 作為外部錨點，確保結果仍能回溯到具體的能源軌跡。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson（2020）的「一般機制」提供了比擬的框架，使得 DSSC–oracle–聲音的生成過程能與人類感知機制相互映射：兩者皆屬於「生成系統」的實例。Andy Clark 的「預測式大腦」理論則幫助我們理解，作品中的聲音並非單純再現，而是經由「預測與誤差修正」而生成的幻象。這些理論視角並非最終結論，而是設計上的導向與反思工具，協助我們將技術流程（量測、特徵提取、上鏈驗證）與哲學框架（感知、真實、幻覺）彼此連結。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 接下來的挑戰在於擴充數據集與語意結構：建立在控制光照與溫度下的小型 DSSC 聲紋資料集，用以驗證再現性。探索如何在聲音潛在空間中保留「鄰近性」，使能源差異能對應聲音差異。評估模糊提取器的失效模式與防偽極限，並將聲紋雜湊註冊為能源憑證。深化「oracle」的雙重含義：當它僅作為驗證機制時，是守門人；但若它能揭示曲線之間的結構性關聯並轉譯為聲音，便開始承擔古義上的「神諭」角色，將物理跡象轉換為另一世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13487</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13487"/>
		<updated>2025-09-07T15:56:22Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 實驗 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
本實驗是在SGMAK Hacker-in-Residency Programme完成的可運作原型。太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在已完成的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。哈希運算（hash operation）是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生哈希值的過程。哈希演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑和兩種不同系統間的語義對齊翻譯工作。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|此圖例說明 Stinson（2020）所提出的「一般機制」概念：不同系統（如運算模型與人類認知）之間的可比擬性，不在於其表徵形式相同，而在於它們是否同屬某種抽象的機制範疇。這樣的視角為將生成藝術與認知系統彼此映射提供了正當性基礎。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 「太陽能神諭隨身聽」現階段是一件結合能源量測與聲音生成的藝術裝置。圖案化 DSSC 的 I–V 曲線被即時轉換為潛在聲音狀態，同時藉由模糊提取器產生可驗證的金鑰，上鏈註冊。此流程使聲音不僅是審美事件，也是一種能被追溯的能量標籤。作品由此強調「生成」與「驗證」的雙重面向：聲音保持創造性漂移，而 oracle 作為外部錨點，確保結果仍能回溯到具體的能源軌跡。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson（2020）的「一般機制」提供了比擬的框架，使得 DSSC–oracle–聲音的生成過程能與人類感知機制相互映射：兩者皆屬於「生成系統」的實例。Andy Clark 的「預測式大腦」理論則幫助我們理解，作品中的聲音並非單純再現，而是經由「預測與誤差修正」而生成的幻象。這些理論視角並非最終結論，而是設計上的導向與反思工具，協助我們將技術流程（量測、特徵提取、上鏈驗證）與哲學框架（感知、真實、幻覺）彼此連結。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 接下來的挑戰在於擴充數據集與語意結構：建立在控制光照與溫度下的小型 DSSC 聲紋資料集，用以驗證再現性。探索如何在聲音潛在空間中保留「鄰近性」，使能源差異能對應聲音差異。評估模糊提取器的失效模式與防偽極限，並將聲紋雜湊註冊為能源憑證。深化「oracle」的雙重含義：當它僅作為驗證機制時，是守門人；但若它能揭示曲線之間的結構性關聯並轉譯為聲音，便開始承擔古義上的「神諭」角色，將物理跡象轉換為另一世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13486</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13486"/>
		<updated>2025-09-07T15:54:05Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 摘要 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
本實驗是在SGMAK Hacker-in-Residency Programme完成的可運作原型。太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在已完成的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑和兩種不同系統間的語義對齊翻譯工作。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|此圖例說明 Stinson（2020）所提出的「一般機制」概念：不同系統（如運算模型與人類認知）之間的可比擬性，不在於其表徵形式相同，而在於它們是否同屬某種抽象的機制範疇。這樣的視角為將生成藝術與認知系統彼此映射提供了正當性基礎。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 「太陽能神諭隨身聽」現階段是一件結合能源量測與聲音生成的藝術裝置。圖案化 DSSC 的 I–V 曲線被即時轉換為潛在聲音狀態，同時藉由模糊提取器產生可驗證的金鑰，上鏈註冊。此流程使聲音不僅是審美事件，也是一種能被追溯的能量標籤。作品由此強調「生成」與「驗證」的雙重面向：聲音保持創造性漂移，而 oracle 作為外部錨點，確保結果仍能回溯到具體的能源軌跡。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson（2020）的「一般機制」提供了比擬的框架，使得 DSSC–oracle–聲音的生成過程能與人類感知機制相互映射：兩者皆屬於「生成系統」的實例。Andy Clark 的「預測式大腦」理論則幫助我們理解，作品中的聲音並非單純再現，而是經由「預測與誤差修正」而生成的幻象。這些理論視角並非最終結論，而是設計上的導向與反思工具，協助我們將技術流程（量測、特徵提取、上鏈驗證）與哲學框架（感知、真實、幻覺）彼此連結。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 接下來的挑戰在於擴充數據集與語意結構：建立在控制光照與溫度下的小型 DSSC 聲紋資料集，用以驗證再現性。探索如何在聲音潛在空間中保留「鄰近性」，使能源差異能對應聲音差異。評估模糊提取器的失效模式與防偽極限，並將聲紋雜湊註冊為能源憑證。深化「oracle」的雙重含義：當它僅作為驗證機制時，是守門人；但若它能揭示曲線之間的結構性關聯並轉譯為聲音，便開始承擔古義上的「神諭」角色，將物理跡象轉換為另一世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13485</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13485"/>
		<updated>2025-09-07T15:53:28Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* Abstract */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
This experiment is an operational prototype made in SGMK Hacker-in-Residence Programme. Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;). The contract functions as a decentralized digital notary, responsible for: verifying signatures and data integrity (EIP-712), managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, storing and publishing commitments and metadata associated with I–V voiceprints. Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE. Download the related code on [https://github.com/shihweichieh2023/solar-oracle-walkman GitHub] here.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Truth-sonified Sculpture: on the similarity between perception and computation as generative Systems=&lt;br /&gt;
Driven by the motivation of energy traceability, this experiment attempts to materialize “the real” and argues that it carries a dual sense: on the one hand, the truth/veracity of blockchain transactions—verifiable and tamper-proof; on the other hand, the reality/the real of perceptual philosophy—how we generate and experience reality itself. To support this view, we must discuss how conceptual models and analogical mechanisms are formed. Following Stinson (2020) on the notion of a generic mechanism, the comparability between computational models and human cognition does not lie in the similarity of their representations, but in whether both can be regarded as instances of an abstract category of mechanism. This provides a legitimate basis for designs that aim to map generative art and cognitive systems onto one another. Many studies already treat AI perception and human perception as two sides of the same process, redeveloping perceptual philosophy through the structure of generative models. For instance, Buckner (2023) proposes that human imagination and memory are closely related to the variational autoencoder (VAE). Andy Clark’s (2023) predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. In this framing, “reality” is not an objective given but a prediction generated by the brain—a controllable illusion. These theories provide a structural bridge for debates in philosophy of mind and philosophy of perception. However, the “reality” of perceptual philosophy and the truthfulness of measurable energy trajectories do not belong to the same ontological category, and thus cannot be straightforwardly juxtaposed within a single framework. Yet the operative mechanism of the artwork creates an initial common ground: the Solar Oracle Walkman can likewise be seen as a perceptual system. Through the oracle mechanism, it extracts “the real” from two worlds—intracranial/on-chain and extracranial/off-chain—while within its algorithms, prediction and error become tools for locating truth. “This sound originates from this solar cell, here and now, under these conditions.” Ultimately, the Solar Oracle Walkman evolves from an exercise in sonifying a traceable energy system into a generative musical sculpture grounded in the sonification of the real and the semantic alignment and translation work between two different systems. Conservatively, the project should still be regarded as an operational sketch of cognitive science, rather than a testable theory of consciousness; it remains at a considered distance from formal consciousness science and the philosophy of mind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|This diagram illustrates Stinson’s (2020) notion of a generic mechanism: the comparability between different systems (e.g., computational models and human cognition) does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This perspective provides a legitimate basis for mapping generative art and cognitive systems onto one another.&lt;br /&gt;
File:hallucinations RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; At its present stage, the Solar Oracle Walkman functions as an artistic device that fuses energy measurement with sound generation. The I–V curve of a patterned DSSC is mapped into a latent sonic state, while a fuzzy extractor produces a verifiable key for on-chain registration. In this way, sound becomes not only an aesthetic event but also a traceable energy label. The work emphasizes the dual nature of generation and verification: sound retains creative drift, while the oracle serves as an external anchor, ensuring that each sonic decision remains traceable to a concrete energy trajectory.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s (2020) notion of the generic mechanism provides a framework for analogy: both the DSSC–oracle–sound pipeline and human perception can be regarded as instances of generative systems. Andy Clark’s theory of the predictive brain further frames sound here not as mere reproduction but as a controllable illusion generated through prediction and error correction. These theoretical perspectives are not final claims but rather design heuristics and reflective tools, helping us connect technical processes (measurement, feature extraction, on-chain proof) with philosophical frameworks (perception, reality, hallucination).&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; The next challenges concern the expansion of data and semantic structure: Build a controlled dataset of DSSC voiceprints under varying light and temperature to test reproducibility. Explore how proximity in sonic latent space can correspond to proximity in energy curves. Assess the failure modes and anti-counterfeiting limits of the fuzzy extractor, registering voiceprint hashes as energy certificates. Deepen the dual meaning of the oracle: as long as it functions only as a verification gatekeeper, it merely authenticates; but once it begins to reveal structural relations between energy curves and translate them into sound, it takes on the ancient role of the oracle—transforming physical signs into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13484</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13484"/>
		<updated>2025-09-07T15:51:46Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 摘要 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
本實驗是在SGMAK Hacker Residency Program的可運作原型。太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在已完成的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑和兩種不同系統間的語義對齊翻譯工作。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|此圖例說明 Stinson（2020）所提出的「一般機制」概念：不同系統（如運算模型與人類認知）之間的可比擬性，不在於其表徵形式相同，而在於它們是否同屬某種抽象的機制範疇。這樣的視角為將生成藝術與認知系統彼此映射提供了正當性基礎。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 「太陽能神諭隨身聽」現階段是一件結合能源量測與聲音生成的藝術裝置。圖案化 DSSC 的 I–V 曲線被即時轉換為潛在聲音狀態，同時藉由模糊提取器產生可驗證的金鑰，上鏈註冊。此流程使聲音不僅是審美事件，也是一種能被追溯的能量標籤。作品由此強調「生成」與「驗證」的雙重面向：聲音保持創造性漂移，而 oracle 作為外部錨點，確保結果仍能回溯到具體的能源軌跡。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson（2020）的「一般機制」提供了比擬的框架，使得 DSSC–oracle–聲音的生成過程能與人類感知機制相互映射：兩者皆屬於「生成系統」的實例。Andy Clark 的「預測式大腦」理論則幫助我們理解，作品中的聲音並非單純再現，而是經由「預測與誤差修正」而生成的幻象。這些理論視角並非最終結論，而是設計上的導向與反思工具，協助我們將技術流程（量測、特徵提取、上鏈驗證）與哲學框架（感知、真實、幻覺）彼此連結。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 接下來的挑戰在於擴充數據集與語意結構：建立在控制光照與溫度下的小型 DSSC 聲紋資料集，用以驗證再現性。探索如何在聲音潛在空間中保留「鄰近性」，使能源差異能對應聲音差異。評估模糊提取器的失效模式與防偽極限，並將聲紋雜湊註冊為能源憑證。深化「oracle」的雙重含義：當它僅作為驗證機制時，是守門人；但若它能揭示曲線之間的結構性關聯並轉譯為聲音，便開始承擔古義上的「神諭」角色，將物理跡象轉換為另一世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13483</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13483"/>
		<updated>2025-09-07T09:56:56Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;). The contract functions as a decentralized digital notary, responsible for: verifying signatures and data integrity (EIP-712), managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, storing and publishing commitments and metadata associated with I–V voiceprints. Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE. Download the related code on [https://github.com/shihweichieh2023/solar-oracle-walkman GitHub] here.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Truth-sonified Sculpture: on the similarity between perception and computation as generative Systems=&lt;br /&gt;
Driven by the motivation of energy traceability, this experiment attempts to materialize “the real” and argues that it carries a dual sense: on the one hand, the truth/veracity of blockchain transactions—verifiable and tamper-proof; on the other hand, the reality/the real of perceptual philosophy—how we generate and experience reality itself. To support this view, we must discuss how conceptual models and analogical mechanisms are formed. Following Stinson (2020) on the notion of a generic mechanism, the comparability between computational models and human cognition does not lie in the similarity of their representations, but in whether both can be regarded as instances of an abstract category of mechanism. This provides a legitimate basis for designs that aim to map generative art and cognitive systems onto one another. Many studies already treat AI perception and human perception as two sides of the same process, redeveloping perceptual philosophy through the structure of generative models. For instance, Buckner (2023) proposes that human imagination and memory are closely related to the variational autoencoder (VAE). Andy Clark’s (2023) predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. In this framing, “reality” is not an objective given but a prediction generated by the brain—a controllable illusion. These theories provide a structural bridge for debates in philosophy of mind and philosophy of perception. However, the “reality” of perceptual philosophy and the truthfulness of measurable energy trajectories do not belong to the same ontological category, and thus cannot be straightforwardly juxtaposed within a single framework. Yet the operative mechanism of the artwork creates an initial common ground: the Solar Oracle Walkman can likewise be seen as a perceptual system. Through the oracle mechanism, it extracts “the real” from two worlds—intracranial/on-chain and extracranial/off-chain—while within its algorithms, prediction and error become tools for locating truth. “This sound originates from this solar cell, here and now, under these conditions.” Ultimately, the Solar Oracle Walkman evolves from an exercise in sonifying a traceable energy system into a generative musical sculpture grounded in the sonification of the real and the semantic alignment and translation work between two different systems. Conservatively, the project should still be regarded as an operational sketch of cognitive science, rather than a testable theory of consciousness; it remains at a considered distance from formal consciousness science and the philosophy of mind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|This diagram illustrates Stinson’s (2020) notion of a generic mechanism: the comparability between different systems (e.g., computational models and human cognition) does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This perspective provides a legitimate basis for mapping generative art and cognitive systems onto one another.&lt;br /&gt;
File:hallucinations RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; At its present stage, the Solar Oracle Walkman functions as an artistic device that fuses energy measurement with sound generation. The I–V curve of a patterned DSSC is mapped into a latent sonic state, while a fuzzy extractor produces a verifiable key for on-chain registration. In this way, sound becomes not only an aesthetic event but also a traceable energy label. The work emphasizes the dual nature of generation and verification: sound retains creative drift, while the oracle serves as an external anchor, ensuring that each sonic decision remains traceable to a concrete energy trajectory.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s (2020) notion of the generic mechanism provides a framework for analogy: both the DSSC–oracle–sound pipeline and human perception can be regarded as instances of generative systems. Andy Clark’s theory of the predictive brain further frames sound here not as mere reproduction but as a controllable illusion generated through prediction and error correction. These theoretical perspectives are not final claims but rather design heuristics and reflective tools, helping us connect technical processes (measurement, feature extraction, on-chain proof) with philosophical frameworks (perception, reality, hallucination).&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; The next challenges concern the expansion of data and semantic structure: Build a controlled dataset of DSSC voiceprints under varying light and temperature to test reproducibility. Explore how proximity in sonic latent space can correspond to proximity in energy curves. Assess the failure modes and anti-counterfeiting limits of the fuzzy extractor, registering voiceprint hashes as energy certificates. Deepen the dual meaning of the oracle: as long as it functions only as a verification gatekeeper, it merely authenticates; but once it begins to reveal structural relations between energy curves and translate them into sound, it takes on the ancient role of the oracle—transforming physical signs into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13482</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13482"/>
		<updated>2025-09-07T09:56:37Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;). The contract functions as a decentralized digital notary, responsible for: verifying signatures and data integrity (EIP-712), managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, storing and publishing commitments and metadata associated with I–V voiceprints. Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE. Download the related code on [https://github.com/shihweichieh2023/solar-oracle-walkman GitHub] here.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Truth-sonified Sculpture: on the similarity between perception and computation as generative Systems=&lt;br /&gt;
Driven by the motivation of energy traceability, this experiment attempts to materialize “the real” and argues that it carries a dual sense: on the one hand, the truth/veracity of blockchain transactions—verifiable and tamper-proof; on the other hand, the reality/the real of perceptual philosophy—how we generate and experience reality itself. To support this view, we must discuss how conceptual models and analogical mechanisms are formed. Following Stinson (2020) on the notion of a generic mechanism, the comparability between computational models and human cognition does not lie in the similarity of their representations, but in whether both can be regarded as instances of an abstract category of mechanism. This provides a legitimate basis for designs that aim to map generative art and cognitive systems onto one another. Many studies already treat AI perception and human perception as two sides of the same process, redeveloping perceptual philosophy through the structure of generative models. For instance, Buckner (2023) proposes that human imagination and memory are closely related to the variational autoencoder (VAE). Andy Clark’s (2023) predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. In this framing, “reality” is not an objective given but a prediction generated by the brain—a controllable illusion. These theories provide a structural bridge for debates in philosophy of mind and philosophy of perception. However, the “reality” of perceptual philosophy and the truthfulness of measurable energy trajectories do not belong to the same ontological category, and thus cannot be straightforwardly juxtaposed within a single framework. Yet the operative mechanism of the artwork creates an initial common ground: the Solar Oracle Walkman can likewise be seen as a perceptual system. Through the oracle mechanism, it extracts “the real” from two worlds—intracranial/on-chain and extracranial/off-chain—while within its algorithms, prediction and error become tools for locating truth. “This sound originates from this solar cell, here and now, under these conditions.” Ultimately, the Solar Oracle Walkman evolves from an exercise in sonifying a traceable energy system into a generative musical sculpture grounded in the sonification of the real and the semantic alignment and translation work between two different systems. Conservatively, the project should still be regarded as an operational sketch of cognitive science, rather than a testable theory of consciousness; it remains at a considered distance from formal consciousness science and the philosophy of mind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|This diagram illustrates Stinson’s (2020) notion of a generic mechanism: the comparability between different systems (e.g., computational models and human cognition) does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This perspective provides a legitimate basis for mapping generative art and cognitive systems onto one another.&lt;br /&gt;
File:hallucinations RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; At its present stage, the Solar Oracle Walkman functions as an artistic device that fuses energy measurement with sound generation. The I–V curve of a patterned DSSC is mapped into a latent sonic state, while a fuzzy extractor produces a verifiable key for on-chain registration. In this way, sound becomes not only an aesthetic event but also a traceable energy label. The work emphasizes the dual nature of generation and verification: sound retains creative drift, while the oracle serves as an external anchor, ensuring that each sonic decision remains traceable to a concrete energy trajectory.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s (2020) notion of the generic mechanism provides a framework for analogy: both the DSSC–oracle–sound pipeline and human perception can be regarded as instances of generative systems. Andy Clark’s theory of the predictive brain further frames sound here not as mere reproduction but as a controllable illusion generated through prediction and error correction. These theoretical perspectives are not final claims but rather design heuristics and reflective tools, helping us connect technical processes (measurement, feature extraction, on-chain proof) with philosophical frameworks (perception, reality, hallucination).&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; The next challenges concern the expansion of data and semantic structure:&lt;br /&gt;
Build a controlled dataset of DSSC voiceprints under varying light and temperature to test reproducibility. Explore how proximity in sonic latent space can correspond to proximity in energy curves. Assess the failure modes and anti-counterfeiting limits of the fuzzy extractor, registering voiceprint hashes as energy certificates. Deepen the dual meaning of the oracle: as long as it functions only as a verification gatekeeper, it merely authenticates; but once it begins to reveal structural relations between energy curves and translate them into sound, it takes on the ancient role of the oracle—transforming physical signs into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13481</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13481"/>
		<updated>2025-09-07T09:55:45Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 討論 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在本研究的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑和兩種不同系統間的語義對齊翻譯工作。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|此圖例說明 Stinson（2020）所提出的「一般機制」概念：不同系統（如運算模型與人類認知）之間的可比擬性，不在於其表徵形式相同，而在於它們是否同屬某種抽象的機制範疇。這樣的視角為將生成藝術與認知系統彼此映射提供了正當性基礎。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 「太陽能神諭隨身聽」現階段是一件結合能源量測與聲音生成的藝術裝置。圖案化 DSSC 的 I–V 曲線被即時轉換為潛在聲音狀態，同時藉由模糊提取器產生可驗證的金鑰，上鏈註冊。此流程使聲音不僅是審美事件，也是一種能被追溯的能量標籤。作品由此強調「生成」與「驗證」的雙重面向：聲音保持創造性漂移，而 oracle 作為外部錨點，確保結果仍能回溯到具體的能源軌跡。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson（2020）的「一般機制」提供了比擬的框架，使得 DSSC–oracle–聲音的生成過程能與人類感知機制相互映射：兩者皆屬於「生成系統」的實例。Andy Clark 的「預測式大腦」理論則幫助我們理解，作品中的聲音並非單純再現，而是經由「預測與誤差修正」而生成的幻象。這些理論視角並非最終結論，而是設計上的導向與反思工具，協助我們將技術流程（量測、特徵提取、上鏈驗證）與哲學框架（感知、真實、幻覺）彼此連結。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 接下來的挑戰在於擴充數據集與語意結構：建立在控制光照與溫度下的小型 DSSC 聲紋資料集，用以驗證再現性。探索如何在聲音潛在空間中保留「鄰近性」，使能源差異能對應聲音差異。評估模糊提取器的失效模式與防偽極限，並將聲紋雜湊註冊為能源憑證。深化「oracle」的雙重含義：當它僅作為驗證機制時，是守門人；但若它能揭示曲線之間的結構性關聯並轉譯為聲音，便開始承擔古義上的「神諭」角色，將物理跡象轉換為另一世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13444</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13444"/>
		<updated>2025-09-05T12:47:29Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 參考 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在本研究的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑和兩種不同系統間的語義對齊翻譯工作。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|此圖例說明 Stinson（2020）所提出的「一般機制」概念：不同系統（如運算模型與人類認知）之間的可比擬性，不在於其表徵形式相同，而在於它們是否同屬某種抽象的機制範疇。這樣的視角為將生成藝術與認知系統彼此映射提供了正當性基礎。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13443</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13443"/>
		<updated>2025-09-05T12:45:13Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;). The contract functions as a decentralized digital notary, responsible for: verifying signatures and data integrity (EIP-712), managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, storing and publishing commitments and metadata associated with I–V voiceprints. Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE. Download the related code on [https://github.com/shihweichieh2023/solar-oracle-walkman GitHub] here.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Truth-sonified Sculpture: on the similarity between perception and computation as generative Systems=&lt;br /&gt;
Driven by the motivation of energy traceability, this experiment attempts to materialize “the real” and argues that it carries a dual sense: on the one hand, the truth/veracity of blockchain transactions—verifiable and tamper-proof; on the other hand, the reality/the real of perceptual philosophy—how we generate and experience reality itself. To support this view, we must discuss how conceptual models and analogical mechanisms are formed. Following Stinson (2020) on the notion of a generic mechanism, the comparability between computational models and human cognition does not lie in the similarity of their representations, but in whether both can be regarded as instances of an abstract category of mechanism. This provides a legitimate basis for designs that aim to map generative art and cognitive systems onto one another. Many studies already treat AI perception and human perception as two sides of the same process, redeveloping perceptual philosophy through the structure of generative models. For instance, Buckner (2023) proposes that human imagination and memory are closely related to the variational autoencoder (VAE). Andy Clark’s (2023) predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. In this framing, “reality” is not an objective given but a prediction generated by the brain—a controllable illusion. These theories provide a structural bridge for debates in philosophy of mind and philosophy of perception. However, the “reality” of perceptual philosophy and the truthfulness of measurable energy trajectories do not belong to the same ontological category, and thus cannot be straightforwardly juxtaposed within a single framework. Yet the operative mechanism of the artwork creates an initial common ground: the Solar Oracle Walkman can likewise be seen as a perceptual system. Through the oracle mechanism, it extracts “the real” from two worlds—intracranial/on-chain and extracranial/off-chain—while within its algorithms, prediction and error become tools for locating truth. “This sound originates from this solar cell, here and now, under these conditions.” Ultimately, the Solar Oracle Walkman evolves from an exercise in sonifying a traceable energy system into a generative musical sculpture grounded in the sonification of the real and the semantic alignment and translation work between two different systems. Conservatively, the project should still be regarded as an operational sketch of cognitive science, rather than a testable theory of consciousness; it remains at a considered distance from formal consciousness science and the philosophy of mind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|This diagram illustrates Stinson’s (2020) notion of a generic mechanism: the comparability between different systems (e.g., computational models and human cognition) does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This perspective provides a legitimate basis for mapping generative art and cognitive systems onto one another.&lt;br /&gt;
File:hallucinations RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#Schmudde, David. 2024. Between Chaos and Order. https://doi.org/10.34626/2024_XCOAX_019.&lt;br /&gt;
#“What Is Complexism? Generative Art and the Cultures of Science and the Humanities | Semantic Scholar.” n.d. Accessed September 5, 2025. https://www.semanticscholar.org/paper/What-is-Complexism-Generative-Art-and-the-Cultures-Galanter/90da494215c460a8f8b7e518b75795f2177d269d.&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13442</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13442"/>
		<updated>2025-09-05T12:13:51Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* Truth-sonified Sculpture: on the similarity between perception and computation as generative Systems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;). The contract functions as a decentralized digital notary, responsible for: verifying signatures and data integrity (EIP-712), managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, storing and publishing commitments and metadata associated with I–V voiceprints. Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE. Download the related code on [https://github.com/shihweichieh2023/solar-oracle-walkman GitHub] here.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Truth-sonified Sculpture: on the similarity between perception and computation as generative Systems=&lt;br /&gt;
Driven by the motivation of energy traceability, this experiment attempts to materialize “the real” and argues that it carries a dual sense: on the one hand, the truth/veracity of blockchain transactions—verifiable and tamper-proof; on the other hand, the reality/the real of perceptual philosophy—how we generate and experience reality itself. To support this view, we must discuss how conceptual models and analogical mechanisms are formed. Following Stinson (2020) on the notion of a generic mechanism, the comparability between computational models and human cognition does not lie in the similarity of their representations, but in whether both can be regarded as instances of an abstract category of mechanism. This provides a legitimate basis for designs that aim to map generative art and cognitive systems onto one another. Many studies already treat AI perception and human perception as two sides of the same process, redeveloping perceptual philosophy through the structure of generative models. For instance, Buckner (2023) proposes that human imagination and memory are closely related to the variational autoencoder (VAE). Andy Clark’s (2023) predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. In this framing, “reality” is not an objective given but a prediction generated by the brain—a controllable illusion. These theories provide a structural bridge for debates in philosophy of mind and philosophy of perception. However, the “reality” of perceptual philosophy and the truthfulness of measurable energy trajectories do not belong to the same ontological category, and thus cannot be straightforwardly juxtaposed within a single framework. Yet the operative mechanism of the artwork creates an initial common ground: the Solar Oracle Walkman can likewise be seen as a perceptual system. Through the oracle mechanism, it extracts “the real” from two worlds—intracranial/on-chain and extracranial/off-chain—while within its algorithms, prediction and error become tools for locating truth. “This sound originates from this solar cell, here and now, under these conditions.” Ultimately, the Solar Oracle Walkman evolves from an exercise in sonifying a traceable energy system into a generative musical sculpture grounded in the sonification of the real and the semantic alignment and translation work between two different systems. Conservatively, the project should still be regarded as an operational sketch of cognitive science, rather than a testable theory of consciousness; it remains at a considered distance from formal consciousness science and the philosophy of mind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|This diagram illustrates Stinson’s (2020) notion of a generic mechanism: the comparability between different systems (e.g., computational models and human cognition) does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This perspective provides a legitimate basis for mapping generative art and cognitive systems onto one another.&lt;br /&gt;
File:hallucinations RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13441</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13441"/>
		<updated>2025-09-05T12:12:35Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 基於感知與運算為生成系統相似性的「真實」聲音化雕塑 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在本研究的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑和兩種不同系統間的語義對齊翻譯工作。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|此圖例說明 Stinson（2020）所提出的「一般機制」概念：不同系統（如運算模型與人類認知）之間的可比擬性，不在於其表徵形式相同，而在於它們是否同屬某種抽象的機制範疇。這樣的視角為將生成藝術與認知系統彼此映射提供了正當性基礎。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13440</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13440"/>
		<updated>2025-09-05T12:10:32Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* Truth-Sonified Sculpture: On the Affinity Between Perception and Computation as Generative Systems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;). The contract functions as a decentralized digital notary, responsible for: verifying signatures and data integrity (EIP-712), managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, storing and publishing commitments and metadata associated with I–V voiceprints. Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE. Download the related code on [https://github.com/shihweichieh2023/solar-oracle-walkman GitHub] here.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Truth-sonified Sculpture: on the similarity between perception and computation as generative Systems=&lt;br /&gt;
Driven by the motivation of energy traceability, this experiment attempts to materialize “the real” and argues that it carries a dual sense:&lt;br /&gt;
on the one hand, the truth/veracity of blockchain transactions—verifiable and tamper-proof;&lt;br /&gt;
on the other hand, the reality/the real of perceptual philosophy—how we generate and experience reality itself.&lt;br /&gt;
To support this view, we must discuss how conceptual models and analogical mechanisms are formed. Following Stinson (2020) on the notion of a generic mechanism, the comparability between computational models and human cognition does not lie in the similarity of their representations, but in whether both can be regarded as instances of an abstract category of mechanism. This provides a legitimate basis for designs that aim to map generative art and cognitive systems onto one another.&lt;br /&gt;
Many studies already treat AI perception and human perception as two sides of the same process, redeveloping perceptual philosophy through the structure of generative models. For instance, Buckner (2023) proposes that human imagination and memory are closely related to the variational autoencoder (VAE). Andy Clark’s (2023) predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. In this framing, “reality” is not an objective given but a prediction generated by the brain—a controllable illusion. These theories provide a structural bridge for debates in philosophy of mind and philosophy of perception.&lt;br /&gt;
However, the “reality” of perceptual philosophy and the truthfulness of measurable energy trajectories do not belong to the same ontological category, and thus cannot be straightforwardly juxtaposed within a single framework. Yet the operative mechanism of the artwork creates an initial common ground: the Solar Oracle Walkman can likewise be seen as a perceptual system. Through the oracle mechanism, it extracts “the real” from two worlds—intracranial/on-chain and extracranial/off-chain—while within its algorithms, prediction and error become tools for locating truth.&lt;br /&gt;
“This sound originates from this solar cell, here and now, under these conditions.” Ultimately, the Solar Oracle Walkman evolves from an exercise in sonifying a traceable energy system into a generative musical sculpture grounded in the sonification of the real. Conservatively, the project should still be regarded as an operational sketch of cognitive science, rather than a testable theory of consciousness; it remains at a considered distance from formal consciousness science and the philosophy of mind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|This diagram illustrates Stinson’s (2020) notion of a generic mechanism: the comparability between different systems (e.g., computational models and human cognition) does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This perspective provides a legitimate basis for mapping generative art and cognitive systems onto one another.&lt;br /&gt;
File:hallucinations RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13439</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13439"/>
		<updated>2025-09-05T12:09:34Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 基於感知與運算為生成系統相似性的「真實」聲音化雕塑 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在本研究的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：&lt;br /&gt;
一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；&lt;br /&gt;
另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。&lt;br /&gt;
為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。&lt;br /&gt;
許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。&lt;br /&gt;
然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。&lt;br /&gt;
「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|此圖例說明 Stinson（2020）所提出的「一般機制」概念：不同系統（如運算模型與人類認知）之間的可比擬性，不在於其表徵形式相同，而在於它們是否同屬某種抽象的機制範疇。這樣的視角為將生成藝術與認知系統彼此映射提供了正當性基礎。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13438</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13438"/>
		<updated>2025-09-05T12:09:13Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* Truth-Sonified Sculpture: On the Affinity Between Perception and Computation as Generative Systems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;). The contract functions as a decentralized digital notary, responsible for: verifying signatures and data integrity (EIP-712), managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, storing and publishing commitments and metadata associated with I–V voiceprints. Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE. Download the related code on [https://github.com/shihweichieh2023/solar-oracle-walkman GitHub] here.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Truth-Sonified Sculpture: On the Affinity Between Perception and Computation as Generative Systems=&lt;br /&gt;
Driven by the motivation of energy traceability, this experiment attempts to materialize “the real” and argues that it carries a dual sense:&lt;br /&gt;
on the one hand, the truth/veracity of blockchain transactions—verifiable and tamper-proof;&lt;br /&gt;
on the other hand, the reality/the real of perceptual philosophy—how we generate and experience reality itself.&lt;br /&gt;
To support this view, we must discuss how conceptual models and analogical mechanisms are formed. Following Stinson (2020) on the notion of a generic mechanism, the comparability between computational models and human cognition does not lie in the similarity of their representations, but in whether both can be regarded as instances of an abstract category of mechanism. This provides a legitimate basis for designs that aim to map generative art and cognitive systems onto one another.&lt;br /&gt;
Many studies already treat AI perception and human perception as two sides of the same process, redeveloping perceptual philosophy through the structure of generative models. For instance, Buckner (2023) proposes that human imagination and memory are closely related to the variational autoencoder (VAE). Andy Clark’s (2023) predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. In this framing, “reality” is not an objective given but a prediction generated by the brain—a controllable illusion. These theories provide a structural bridge for debates in philosophy of mind and philosophy of perception.&lt;br /&gt;
However, the “reality” of perceptual philosophy and the truthfulness of measurable energy trajectories do not belong to the same ontological category, and thus cannot be straightforwardly juxtaposed within a single framework. Yet the operative mechanism of the artwork creates an initial common ground: the Solar Oracle Walkman can likewise be seen as a perceptual system. Through the oracle mechanism, it extracts “the real” from two worlds—intracranial/on-chain and extracranial/off-chain—while within its algorithms, prediction and error become tools for locating truth.&lt;br /&gt;
“This sound originates from this solar cell, here and now, under these conditions.” Ultimately, the Solar Oracle Walkman evolves from an exercise in sonifying a traceable energy system into a generative musical sculpture grounded in the sonification of the real. Conservatively, the project should still be regarded as an operational sketch of cognitive science, rather than a testable theory of consciousness; it remains at a considered distance from formal consciousness science and the philosophy of mind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|This diagram illustrates Stinson’s (2020) notion of a generic mechanism: the comparability between different systems (e.g., computational models and human cognition) does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This perspective provides a legitimate basis for mapping generative art and cognitive systems onto one another.&lt;br /&gt;
File:hallucinations RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13437</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13437"/>
		<updated>2025-09-05T12:08:05Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 基於感知與運算為生成系統的相似性的真實聲音化雕塑 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在本研究的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統相似性的「真實」聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機之下，本實驗試圖將「真實」具現化，並提出其具有雙重含義：&lt;br /&gt;
一方面是區塊鏈交易中的 真實性（truth / veracity），即可驗證與不可竄改的層面；&lt;br /&gt;
另一方面則是感知哲學裡我們如何生成與經驗 現實（reality / the real） 的層面。&lt;br /&gt;
為了支撐此觀點，我們必須討論概念模型與類比機制的形成方式。依據 Stinson（2020）所提出的「一般機制」（generic mechanism），運算模型與人類認知的可比擬性並不在於其表徵形式是否相似，而在於兩者是否都能被視為某種抽象機制範疇的實例。這為意圖將生成藝術與認知系統彼此映射的設計提供了正當性基礎。&lt;br /&gt;
許多研究已經將 AI 感知與人類感知視為一體兩面的過程，並藉由生成模型的結構重塑感知哲學。例如 Buckner (2023) 提出，人類的想像力與記憶與變分自編碼器（VAE）高度相關；Andy Clark (2023) 的「預測式大腦」理論則指出，感知與人工智慧皆可被理解為生成機制：它們並非被動接收訊號，而是主動預測與修正。換言之，所謂「現實」並非客觀既存，而是大腦生成的預測，一種可調控的幻象。這些理論為心智哲學與感知哲學的辯論提供了結構性的橋梁。&lt;br /&gt;
然而，「感知哲學中的現實」與「可度量的能量軌跡的真實性」在本體論層級上並非同一類型，因而難以在單一框架下直接並置。但本實驗所創造的藝術機制，卻建立了初步的「共地」：「太陽能神諭隨身聽」的運算過程也可被視為一種感知系統。透過 oracle 機制，它從兩個世界——顱內／鏈上 與 顱外／鏈下——提取「真實」，而演算法中的「預測與誤差」則成為定位「真實」的工具。&lt;br /&gt;
「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman 從一個將能源追溯系統聲音化的練習，轉化為一種以「真實」聲音化為核心的生成音樂雕塑。謹慎而言，本計劃仍應被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson的通用機制圖表。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13436</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13436"/>
		<updated>2025-09-05T12:08:00Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* The sonify oracle as bridge: a minimal cognitive generative system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;). The contract functions as a decentralized digital notary, responsible for: verifying signatures and data integrity (EIP-712), managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, storing and publishing commitments and metadata associated with I–V voiceprints. Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE. Download the related code on [https://github.com/shihweichieh2023/solar-oracle-walkman GitHub] here.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Truth-Sonified Sculpture: On the Affinity Between Perception and Computation as Generative Systems=&lt;br /&gt;
Driven by the motivation of energy traceability, this experiment attempts to materialize “the real” and argues that it carries a dual sense:&lt;br /&gt;
on the one hand, the truth/veracity of blockchain transactions—verifiable and tamper-proof;&lt;br /&gt;
on the other hand, the reality/the real of perceptual philosophy—how we generate and experience reality itself.&lt;br /&gt;
To support this view, we must discuss how conceptual models and analogical mechanisms are formed. Following Stinson (2020) on the notion of a generic mechanism, the comparability between computational models and human cognition does not lie in the similarity of their representations, but in whether both can be regarded as instances of an abstract category of mechanism. This provides a legitimate basis for designs that aim to map generative art and cognitive systems onto one another.&lt;br /&gt;
Many studies already treat AI perception and human perception as two sides of the same process, redeveloping perceptual philosophy through the structure of generative models. For instance, Buckner (2023) proposes that human imagination and memory are closely related to the variational autoencoder (VAE). Andy Clark’s (2023) predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. In this framing, “reality” is not an objective given but a prediction generated by the brain—a controllable illusion. These theories provide a structural bridge for debates in philosophy of mind and philosophy of perception.&lt;br /&gt;
However, the “reality” of perceptual philosophy and the truthfulness of measurable energy trajectories do not belong to the same ontological category, and thus cannot be straightforwardly juxtaposed within a single framework. Yet the operative mechanism of the artwork creates an initial common ground: the Solar Oracle Walkman can likewise be seen as a perceptual system. Through the oracle mechanism, it extracts “the real” from two worlds—intracranial/on-chain and extracranial/off-chain—while within its algorithms, prediction and error become tools for locating truth.&lt;br /&gt;
“This sound originates from this solar cell, here and now, under these conditions.” Ultimately, the Solar Oracle Walkman evolves from an exercise in sonifying a traceable energy system into a generative musical sculpture grounded in the sonification of the real. Conservatively, the project should still be regarded as an operational sketch of cognitive science, rather than a testable theory of consciousness; it remains at a considered distance from formal consciousness science and the philosophy of mind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson&#039;s &amp;quot;generic mechanism&amp;quot;。&lt;br /&gt;
File:hallucinations RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13435</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13435"/>
		<updated>2025-09-05T12:03:36Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 聲音化的神諭作為橋樑：一個極簡的認知生成系統 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在本研究的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=基於感知與運算為生成系統的相似性的真實聲音化雕塑=&lt;br /&gt;
在追蹤能源的動機底下，本實驗試圖將「真實」具現化並提出「真實」具有雙重含義：一是區塊鏈交易的真實性驗證層面，二是感知哲學裡我們如何感知並提取現實的層面。為了支持此觀點，我們必需討論概念模型與類比機制的形成方法。依據Stinson（2020）提出的「一般機制」（generic mechanism），如運算模型與人類認知之間的相似性，並不在於其表徵是否相似，而在於兩者是否都可被視為某種抽象機制範疇的實例，這為意圖把生成藝術與認知系統彼此映射的設計提供了正當性的依據。。許多研究已經將AI感知與人類感知形成過程視為一體兩面的，並藉由生成模型結構重新發展感知哲學，例如Buckner (2023)提出人類想像力和記憶與變分自編碼器（Variational AutoEncoder）具高度相關性。Andy Clark（2023）的「預測式大腦」理論指出，感知與人工智慧皆可被理解為生成機制：它們不只是被動接收訊號，而是主動進行預測與校正，也就是說現實並非客觀的既存物，而是大腦生成的預測，一種可被調控的幻象。這些理論為心智哲學、感知哲學的辨論提供了結構的橋梁。「感知哲學中的真實」和「可度量的能量軌跡的真實」在原義上仍有差距，造成了在本體論框架下將兩者並置的困難，但是本實驗中所創造的藝術品運作機制創造了初步的「共地」：「太陽能神諭隨身聽」的運算過程同樣可以被視為感知的系統：如何從兩個世界——顱內／鏈上自顱外／鏈下通過oracle機制提取「真實」，演算法中的「預測與誤差」，則成為了測量「真實」定位的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman從一套將可追溯能源系統聲音化的練習，成為基於將「真實」聲音化的生成音樂雕塑。保守而言，本計劃仍只能被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持一定距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson的通用機制圖表。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13434</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13434"/>
		<updated>2025-09-05T11:51:57Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 聲音化的神諭作為橋樑：一個極簡的認知生成系統 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在本研究的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=聲音化的神諭作為橋樑：一個極簡的認知生成系統=&lt;br /&gt;
在追蹤能源的動機底下，本實驗試圖將「真實」具現化並提出「真實」具有雙重含義：一是區塊鏈交易的真實性驗證層面，二是感知哲學裡我們如何感知並提取現實的層面。為了支持此觀點，我們必需討論概念模型與類比機制的形成方法。依據Stinson（2020）提出的「一般機制」（generic mechanism），運算模型與人類認知之間的可比擬性，並不在於其表徵是否相似，而在於兩者是否都可被視為某種抽象機制範疇的實例，這為意圖把生成藝術與認知系統彼此映射的設計提供了正當性的依據。。許多研究已經將AI感知與人類感知形成過程視為一體兩面的，並藉由生成模型結構重新發展感知哲學，例如Buckner (2023)提出人類想像力和記憶與變分自編碼器（Variational AutoEncoder）具高度相關性。Andy Clark（2023）的「預測式大腦」理論指出，感知與人工智慧皆可被理解為生成機制：它們不只是被動接收訊號，而是主動進行預測與校正，也就是說現實並非客觀的既存物，而是大腦生成的預測，一種可被調控的幻象。這些理論為心智哲學、感知哲學的辨論提供了結構的橋梁。「感知哲學中的真實」和「可度量的能量軌跡的真實」在原義上仍有差距，造成了在本體論框架下將兩者並置的困難，但是本實驗中所創造的藝術品運作機制創造了初步的「共地」：「太陽能神諭隨身聽」的運算過程同樣可以被視為感知的系統：如何從兩個世界——顱內／鏈上自顱外／鏈下通過oracle機制提取「真實」，演算法中的「預測與誤差」，則成為了測量「真實」定位的工具。「這個聲音源自這片太陽能電池，於此時此地、在這些條件之下。」最終，Solar Oracle Walkman從一套將可追溯能源系統聲音化的練習，成為基於將「真實」聲音化的生成音樂雕塑。保守而言，本計劃仍只能被視為一份關於認知科學的「運作性草圖」（operational sketch），而非可驗證的意識理論；它與正式的意識科學與心靈哲學仍保持一定距離。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson的通用機制圖表。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13433</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13433"/>
		<updated>2025-09-05T10:42:37Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 智慧合約驗證系統 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在本研究的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：驗證簽名與資料完整性（EIP-712）、以 panel_id 為鍵管理提交、儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料。注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。相關測試程式碼可以在[https://github.com/shihweichieh2023/solar-oracle-walkman Github]下載。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
=聲音化的神諭作為橋樑：一個極簡的認知生成系統=&lt;br /&gt;
在太陽能神諭隨身聽計劃中，測量模式化的DSSC的I-V曲線，並將其映射到聲音的潛在狀態中，同時一個單獨的模糊提取器會導出一個可驗證的密鑰，用於鏈上證明。在這裡，神諭就像一座橋樑：它將一個加密聲明（例如，keccak256(K || salt)）從物理世界傳遞到智能合約，將聲音的想像力與可測量的能源軌跡聯繫起來。這使得作品能夠被視為一項表演實驗：每一個聲音決策都可以追溯至能量曲線上的可測變換。遵循Stinson（2020）的通用機制，人工智慧模型與人類認知之間的可比擬性，不在於它們的表徵形式是否相似，而在於它們是否能被視為同屬某種抽象的機制範疇，這為將意圖將生成藝術和認知系統做彼此映射的設計提供了合法執照。我們可以將太陽能神諭隨身聽與人類認知系統中的生成機制相比擬：現實/正確物理資訊只存在於兩個世界─顱內/顱外─鏈上/鏈下之間的交互作用。Andy的預測大腦理論更提出感知與人工智慧都可以被理解為生成機制：它們不只是被動的接收訊號，而是主動進行預測與修正；現實不是客觀現象，而是大腦生成的預測，現實則是可控制的幻象。這使的太陽能神喻隨身聽成為一個微型劇場，使預測與誤差成為藝術材料。保守評估，這是一個認知的執行性工程草圖，而非可測試的意識理論；它與正式的意識科學和心智哲學仍保持著一段距離。此外，除了提出使用生成系統做為設計方針，在藝術的掩護下刺激能源交易的發明；為什麼oracle在此至關重要？藉由oracle和具半導體缺陷的DSSC，讓作品能夠宣稱：「這種聲音源於這片太陽能板，現在，在這些條件下」，最終形成了一個音樂廠牌，聲音化的可追溯能源系統。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson的通用機制圖表。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13432</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13432"/>
		<updated>2025-09-05T10:41:30Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* Smart Contract Verification System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;). The contract functions as a decentralized digital notary, responsible for: verifying signatures and data integrity (EIP-712), managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, storing and publishing commitments and metadata associated with I–V voiceprints. Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE. Download the related code on [https://github.com/shihweichieh2023/solar-oracle-walkman GitHub] here.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=The sonify oracle as bridge: a minimal cognitive generative system=&lt;br /&gt;
In the Solar Oracle Walkman project, the I–V curve of a patterned DSSC is measured and mapped into a latent state of sound, while a separate fuzzy extractor derives a verifiable key for on-chain proof. Here, the oracle acts like a bridge: it carries a cryptographic statement (e.g., keccak256(K || salt)) from the physical world into a smart contract, linking the imagination of sound with measurable energy trajectories. This allows the work to be understood as a performative experiment: every sonic decision can be traced back to a measurable transformation on the energy curve.&lt;br /&gt;
Following Stinson’s (2020) notion of a generic mechanism, the comparability between AI models and human cognition does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This provides a legitimate license for designs that aim to map generative art and cognitive systems onto one another. The Solar Oracle Walkman can thus be compared to the generative mechanisms of human cognition: reality or correct physical information exists only in the interaction between two worlds—intra-cranial / extra-cranial, on-chain / off-chain.&lt;br /&gt;
Andy Clark’s predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. Reality is not an objective phenomenon, but a prediction generated by the brain—a controllable illusion. This makes the Solar Oracle Walkman into a miniature theater, turning prediction and error into artistic material. Conservatively, it should be seen as an operational sketch of cognition rather than a testable theory of consciousness; it still maintains a distance from formal consciousness science and philosophy of mind.&lt;br /&gt;
Beyond proposing generative systems as a design guideline, the work also explores, under the cover of art, the provocation of inventing new modes of energy trading. Why is the oracle crucial here? Through the oracle and the semiconductor defects of DSSCs, the work can claim: “This sound originates from this solar cell, here and now under these conditions.” Ultimately, it becomes a kind of musical label—a sonified, traceable energy system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson&#039;s &amp;quot;generic mechanism&amp;quot;。&lt;br /&gt;
File:hallucinations RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13431</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13431"/>
		<updated>2025-09-05T10:14:56Z</updated>

		<summary type="html">&lt;p&gt;Abao: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在本研究的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：&lt;br /&gt;
- 驗證簽名與資料完整性（EIP-712）&lt;br /&gt;
- 以 panel_id 為鍵管理提交&lt;br /&gt;
- 儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料&lt;br /&gt;
&lt;br /&gt;
注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=聲音化的神諭作為橋樑：一個極簡的認知生成系統=&lt;br /&gt;
在太陽能神諭隨身聽計劃中，測量模式化的DSSC的I-V曲線，並將其映射到聲音的潛在狀態中，同時一個單獨的模糊提取器會導出一個可驗證的密鑰，用於鏈上證明。在這裡，神諭就像一座橋樑：它將一個加密聲明（例如，keccak256(K || salt)）從物理世界傳遞到智能合約，將聲音的想像力與可測量的能源軌跡聯繫起來。這使得作品能夠被視為一項表演實驗：每一個聲音決策都可以追溯至能量曲線上的可測變換。遵循Stinson（2020）的通用機制，人工智慧模型與人類認知之間的可比擬性，不在於它們的表徵形式是否相似，而在於它們是否能被視為同屬某種抽象的機制範疇，這為將意圖將生成藝術和認知系統做彼此映射的設計提供了合法執照。我們可以將太陽能神諭隨身聽與人類認知系統中的生成機制相比擬：現實/正確物理資訊只存在於兩個世界─顱內/顱外─鏈上/鏈下之間的交互作用。Andy的預測大腦理論更提出感知與人工智慧都可以被理解為生成機制：它們不只是被動的接收訊號，而是主動進行預測與修正；現實不是客觀現象，而是大腦生成的預測，現實則是可控制的幻象。這使的太陽能神喻隨身聽成為一個微型劇場，使預測與誤差成為藝術材料。保守評估，這是一個認知的執行性工程草圖，而非可測試的意識理論；它與正式的意識科學和心智哲學仍保持著一段距離。此外，除了提出使用生成系統做為設計方針，在藝術的掩護下刺激能源交易的發明；為什麼oracle在此至關重要？藉由oracle和具半導體缺陷的DSSC，讓作品能夠宣稱：「這種聲音源於這片太陽能板，現在，在這些條件下」，最終形成了一個音樂廠牌，聲音化的可追溯能源系統。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson的通用機制圖表。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13430</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13430"/>
		<updated>2025-09-05T10:13:59Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 第一個原型 v1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在本研究的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
&lt;br /&gt;
=== 概述 ===&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：&lt;br /&gt;
- 驗證簽名與資料完整性（EIP-712）&lt;br /&gt;
- 以 panel_id 為鍵管理提交&lt;br /&gt;
- 儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料&lt;br /&gt;
&lt;br /&gt;
注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=聲音化的神諭作為橋樑：一個極簡的認知生成系統=&lt;br /&gt;
在太陽能神諭隨身聽計劃中，測量模式化的DSSC的I-V曲線，並將其映射到聲音的潛在狀態中，同時一個單獨的模糊提取器會導出一個可驗證的密鑰，用於鏈上證明。在這裡，神諭就像一座橋樑：它將一個加密聲明（例如，keccak256(K || salt)）從物理世界傳遞到智能合約，將聲音的想像力與可測量的能源軌跡聯繫起來。這使得作品能夠被視為一項表演實驗：每一個聲音決策都可以追溯至能量曲線上的可測變換。遵循Stinson（2020）的通用機制，人工智慧模型與人類認知之間的可比擬性，不在於它們的表徵形式是否相似，而在於它們是否能被視為同屬某種抽象的機制範疇，這為將意圖將生成藝術和認知系統做彼此映射的設計提供了合法執照。我們可以將太陽能神諭隨身聽與人類認知系統中的生成機制相比擬：現實/正確物理資訊只存在於兩個世界─顱內/顱外─鏈上/鏈下之間的交互作用。Andy的預測大腦理論更提出感知與人工智慧都可以被理解為生成機制：它們不只是被動的接收訊號，而是主動進行預測與修正；現實不是客觀現象，而是大腦生成的預測，現實則是可控制的幻象。這使的太陽能神喻隨身聽成為一個微型劇場，使預測與誤差成為藝術材料。保守評估，這是一個認知的執行性工程草圖，而非可測試的意識理論；它與正式的意識科學和心智哲學仍保持著一段距離。此外，除了提出使用生成系統做為設計方針，在藝術的掩護下刺激能源交易的發明；為什麼oracle在此至關重要？藉由oracle和具半導體缺陷的DSSC，讓作品能夠宣稱：「這種聲音源於這片太陽能板，現在，在這些條件下」，最終形成了一個音樂廠牌，聲音化的可追溯能源系統。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson的通用機制圖表。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13429</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13429"/>
		<updated>2025-09-05T10:13:05Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* The sonify oracle as bridge: a minimal cognitive generative system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;).  &lt;br /&gt;
The contract functions as a decentralized digital notary, responsible for:&lt;br /&gt;
- Verifying signatures and data integrity (EIP-712)&lt;br /&gt;
- Managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
- Storing and publishing commitments and metadata associated with I–V voiceprints&lt;br /&gt;
&lt;br /&gt;
Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=The sonify oracle as bridge: a minimal cognitive generative system=&lt;br /&gt;
In the Solar Oracle Walkman project, the I–V curve of a patterned DSSC is measured and mapped into a latent state of sound, while a separate fuzzy extractor derives a verifiable key for on-chain proof. Here, the oracle acts like a bridge: it carries a cryptographic statement (e.g., keccak256(K || salt)) from the physical world into a smart contract, linking the imagination of sound with measurable energy trajectories. This allows the work to be understood as a performative experiment: every sonic decision can be traced back to a measurable transformation on the energy curve.&lt;br /&gt;
Following Stinson’s (2020) notion of a generic mechanism, the comparability between AI models and human cognition does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This provides a legitimate license for designs that aim to map generative art and cognitive systems onto one another. The Solar Oracle Walkman can thus be compared to the generative mechanisms of human cognition: reality or correct physical information exists only in the interaction between two worlds—intra-cranial / extra-cranial, on-chain / off-chain.&lt;br /&gt;
Andy Clark’s predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. Reality is not an objective phenomenon, but a prediction generated by the brain—a controllable illusion. This makes the Solar Oracle Walkman into a miniature theater, turning prediction and error into artistic material. Conservatively, it should be seen as an operational sketch of cognition rather than a testable theory of consciousness; it still maintains a distance from formal consciousness science and philosophy of mind.&lt;br /&gt;
Beyond proposing generative systems as a design guideline, the work also explores, under the cover of art, the provocation of inventing new modes of energy trading. Why is the oracle crucial here? Through the oracle and the semiconductor defects of DSSCs, the work can claim: “This sound originates from this solar cell, here and now under these conditions.” Ultimately, it becomes a kind of musical label—a sonified, traceable energy system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson&#039;s &amp;quot;generic mechanism&amp;quot;。&lt;br /&gt;
File:hallucinations RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=File:Hallucinations_RAVE.png&amp;diff=13428</id>
		<title>File:Hallucinations RAVE.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=File:Hallucinations_RAVE.png&amp;diff=13428"/>
		<updated>2025-09-05T10:12:35Z</updated>

		<summary type="html">&lt;p&gt;Abao: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13427</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13427"/>
		<updated>2025-09-05T10:09:51Z</updated>

		<summary type="html">&lt;p&gt;Abao: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;).  &lt;br /&gt;
The contract functions as a decentralized digital notary, responsible for:&lt;br /&gt;
- Verifying signatures and data integrity (EIP-712)&lt;br /&gt;
- Managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
- Storing and publishing commitments and metadata associated with I–V voiceprints&lt;br /&gt;
&lt;br /&gt;
Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=The sonify oracle as bridge: a minimal cognitive generative system=&lt;br /&gt;
In the Solar Oracle Walkman project, the I–V curve of a patterned DSSC is measured and mapped into a latent state of sound, while a separate fuzzy extractor derives a verifiable key for on-chain proof. Here, the oracle acts like a bridge: it carries a cryptographic statement (e.g., keccak256(K || salt)) from the physical world into a smart contract, linking the imagination of sound with measurable energy trajectories. This allows the work to be understood as a performative experiment: every sonic decision can be traced back to a measurable transformation on the energy curve.&lt;br /&gt;
Following Stinson’s (2020) notion of a generic mechanism, the comparability between AI models and human cognition does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This provides a legitimate license for designs that aim to map generative art and cognitive systems onto one another. The Solar Oracle Walkman can thus be compared to the generative mechanisms of human cognition: reality or correct physical information exists only in the interaction between two worlds—intra-cranial / extra-cranial, on-chain / off-chain.&lt;br /&gt;
Andy Clark’s predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. Reality is not an objective phenomenon, but a prediction generated by the brain—a controllable illusion. This makes the Solar Oracle Walkman into a miniature theater, turning prediction and error into artistic material. Conservatively, it should be seen as an operational sketch of cognition rather than a testable theory of consciousness; it still maintains a distance from formal consciousness science and philosophy of mind.&lt;br /&gt;
Beyond proposing generative systems as a design guideline, the work also explores, under the cover of art, the provocation of inventing new modes of energy trading. Why is the oracle crucial here? Through the oracle and the semiconductor defects of DSSCs, the work can claim: “This sound originates from this solar cell, here and now under these conditions.” Ultimately, it becomes a kind of musical label—a sonified, traceable energy system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson&#039;s &amp;quot;generic mechanism&amp;quot;。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13426</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13426"/>
		<updated>2025-09-05T10:07:41Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* The first prototype v1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;).  &lt;br /&gt;
The contract functions as a decentralized digital notary, responsible for:&lt;br /&gt;
- Verifying signatures and data integrity (EIP-712)&lt;br /&gt;
- Managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
- Storing and publishing commitments and metadata associated with I–V voiceprints&lt;br /&gt;
&lt;br /&gt;
Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=The sonify oracle as bridge: a minimal cognitive generative system=&lt;br /&gt;
In the Solar Oracle Walkman project, the I–V curve of a patterned DSSC is measured and mapped into a latent state of sound, while a separate fuzzy extractor derives a verifiable key for on-chain proof. Here, the oracle acts like a bridge: it carries a cryptographic statement (e.g., keccak256(K || salt)) from the physical world into a smart contract, linking the imagination of sound with measurable energy trajectories. This allows the work to be understood as a performative experiment: every sonic decision can be traced back to a measurable transformation on the energy curve.&lt;br /&gt;
Following Stinson’s (2020) notion of a generic mechanism, the comparability between AI models and human cognition does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This provides a legitimate license for designs that aim to map generative art and cognitive systems onto one another. The Solar Oracle Walkman can thus be compared to the generative mechanisms of human cognition: reality or correct physical information exists only in the interaction between two worlds—intra-cranial / extra-cranial, on-chain / off-chain.&lt;br /&gt;
Andy Clark’s predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. Reality is not an objective phenomenon, but a prediction generated by the brain—a controllable illusion. This makes the Solar Oracle Walkman into a miniature theater, turning prediction and error into artistic material. Conservatively, it should be seen as an operational sketch of cognition rather than a testable theory of consciousness; it still maintains a distance from formal consciousness science and philosophy of mind.&lt;br /&gt;
Beyond proposing generative systems as a design guideline, the work also explores, under the cover of art, the provocation of inventing new modes of energy trading. Why is the oracle crucial here? Through the oracle and the semiconductor defects of DSSCs, the work can claim: “This sound originates from this solar cell, here and now under these conditions.” Ultimately, it becomes a kind of musical label—a sonified, traceable energy system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson&#039;s &amp;quot;generic mechanism&amp;quot;。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13425</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13425"/>
		<updated>2025-09-05T10:06:10Z</updated>

		<summary type="html">&lt;p&gt;Abao: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions. The feature definitions (scale-free) are listed below:&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;).  &lt;br /&gt;
The contract functions as a decentralized digital notary, responsible for:&lt;br /&gt;
- Verifying signatures and data integrity (EIP-712)&lt;br /&gt;
- Managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
- Storing and publishing commitments and metadata associated with I–V voiceprints&lt;br /&gt;
&lt;br /&gt;
Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=The sonify oracle as bridge: a minimal cognitive generative system=&lt;br /&gt;
In the Solar Oracle Walkman project, the I–V curve of a patterned DSSC is measured and mapped into a latent state of sound, while a separate fuzzy extractor derives a verifiable key for on-chain proof. Here, the oracle acts like a bridge: it carries a cryptographic statement (e.g., keccak256(K || salt)) from the physical world into a smart contract, linking the imagination of sound with measurable energy trajectories. This allows the work to be understood as a performative experiment: every sonic decision can be traced back to a measurable transformation on the energy curve.&lt;br /&gt;
Following Stinson’s (2020) notion of a generic mechanism, the comparability between AI models and human cognition does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This provides a legitimate license for designs that aim to map generative art and cognitive systems onto one another. The Solar Oracle Walkman can thus be compared to the generative mechanisms of human cognition: reality or correct physical information exists only in the interaction between two worlds—intra-cranial / extra-cranial, on-chain / off-chain.&lt;br /&gt;
Andy Clark’s predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. Reality is not an objective phenomenon, but a prediction generated by the brain—a controllable illusion. This makes the Solar Oracle Walkman into a miniature theater, turning prediction and error into artistic material. Conservatively, it should be seen as an operational sketch of cognition rather than a testable theory of consciousness; it still maintains a distance from formal consciousness science and philosophy of mind.&lt;br /&gt;
Beyond proposing generative systems as a design guideline, the work also explores, under the cover of art, the provocation of inventing new modes of energy trading. Why is the oracle crucial here? Through the oracle and the semiconductor defects of DSSCs, the work can claim: “This sound originates from this solar cell, here and now under these conditions.” Ultimately, it becomes a kind of musical label—a sonified, traceable energy system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson&#039;s &amp;quot;generic mechanism&amp;quot;。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13424</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13424"/>
		<updated>2025-09-05T10:05:29Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* The 2nd prototype v2: RAVE as mediator and fuzzy extractor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions. The feature definitions (scale-free) are listed below:&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==The 2nd prototype v2: RAVE as mediator and fuzzy extractor==&lt;br /&gt;
== Second Prototype v2: RAVE as Intermediate Layer and Fuzzy Extractor ==&lt;br /&gt;
In the v1 version, using ml.scale and ml.principle for PCA provided only linear dimensionality reduction; it could not guarantee “reproducibility under varying illumination” or “error correction for a binary key.” Therefore, I propose v2, which adopts a fuzzy extractor: it converts the continuous latent vector &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; into an error-correctable, verifiable bitstring and outputs a stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, simultaneously meeting the requirements of identity reproducibility and on-chain verification.&lt;br /&gt;
&lt;br /&gt;
=== I–V Encoder Training (Off-chain) ===&lt;br /&gt;
# Platform: Google Colab  &lt;br /&gt;
# Architecture: Conv1D (since the RAVE encoder cannot directly process curve data)  &lt;br /&gt;
# Input: continuous 7-dimensional “voiceprint” &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Output: latent vector &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt; (dimensionality aligned with downstream audio decoder)  &lt;br /&gt;
# Training objective: triplet loss (pull samples of the same cell closer, push different cells apart) + prior matching (make z follow the decoder’s Gaussian prior)  &lt;br /&gt;
# Data augmentation: gain scaling / small noise / temporal jitter  &lt;br /&gt;
&lt;br /&gt;
=== Fuzzy Extraction (Off-chain) ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → normalization, quantization  &lt;br /&gt;
# Pass through ECC (error-correcting code) → derive stable key &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Compute commitment: &amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Enrollment ===&lt;br /&gt;
# Initial enrollment: &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Subsequent verification: reconstruct &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → compute &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → compare with on-chain commitment  &lt;br /&gt;
# Feature: the contract automatically associates the record with &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, without uploading any human identity information  &lt;br /&gt;
&lt;br /&gt;
=== Audio Decoder (Off-chain) ===&lt;br /&gt;
# Training: independently on musical data, or reusing an existing RAVE decoder  &lt;br /&gt;
# Function: sonify &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;  &lt;br /&gt;
# Stability: because the encoder enforces geometric stability in z, repeated measurements of the same cell yield reproducible timbre and dynamics  &lt;br /&gt;
# Cross-modal mapping: &amp;lt;code&amp;gt;I–V → audio latent&amp;lt;/code&amp;gt;: semantic order is preserved only on the encoder side, while the decoder-side mapping is determined by artistic/compositional context  &lt;br /&gt;
&lt;br /&gt;
=== Verifiable Semantic Space (VSP) ===&lt;br /&gt;
According to Jha et al. (2025), semantic stability relies on three core constraints:  &lt;br /&gt;
# Reconstruction: the transformed representation can be mapped back to the source  &lt;br /&gt;
# Cycle-consistency: round-trip transforms preserve meaning  &lt;br /&gt;
# Vector space preservation (VSP): pairwise distances among embeddings remain preserved after mapping  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;).  &lt;br /&gt;
The contract functions as a decentralized digital notary, responsible for:&lt;br /&gt;
- Verifying signatures and data integrity (EIP-712)&lt;br /&gt;
- Managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
- Storing and publishing commitments and metadata associated with I–V voiceprints&lt;br /&gt;
&lt;br /&gt;
Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=The sonify oracle as bridge: a minimal cognitive generative system=&lt;br /&gt;
In the Solar Oracle Walkman project, the I–V curve of a patterned DSSC is measured and mapped into a latent state of sound, while a separate fuzzy extractor derives a verifiable key for on-chain proof. Here, the oracle acts like a bridge: it carries a cryptographic statement (e.g., keccak256(K || salt)) from the physical world into a smart contract, linking the imagination of sound with measurable energy trajectories. This allows the work to be understood as a performative experiment: every sonic decision can be traced back to a measurable transformation on the energy curve.&lt;br /&gt;
Following Stinson’s (2020) notion of a generic mechanism, the comparability between AI models and human cognition does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This provides a legitimate license for designs that aim to map generative art and cognitive systems onto one another. The Solar Oracle Walkman can thus be compared to the generative mechanisms of human cognition: reality or correct physical information exists only in the interaction between two worlds—intra-cranial / extra-cranial, on-chain / off-chain.&lt;br /&gt;
Andy Clark’s predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. Reality is not an objective phenomenon, but a prediction generated by the brain—a controllable illusion. This makes the Solar Oracle Walkman into a miniature theater, turning prediction and error into artistic material. Conservatively, it should be seen as an operational sketch of cognition rather than a testable theory of consciousness; it still maintains a distance from formal consciousness science and philosophy of mind.&lt;br /&gt;
Beyond proposing generative systems as a design guideline, the work also explores, under the cover of art, the provocation of inventing new modes of energy trading. Why is the oracle crucial here? Through the oracle and the semiconductor defects of DSSCs, the work can claim: “This sound originates from this solar cell, here and now under these conditions.” Ultimately, it becomes a kind of musical label—a sonified, traceable energy system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson&#039;s &amp;quot;generic mechanism&amp;quot;。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13423</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13423"/>
		<updated>2025-09-05T10:02:49Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* =The 2nd prototype v2: RAVE as mediator and fuzzy extractor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions. The feature definitions (scale-free) are listed below:&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==The 2nd prototype v2: RAVE as mediator and fuzzy extractor==&lt;br /&gt;
PCA is merely linear dimensionality reduction; it cannot guarantee &amp;quot;reproducibility under varying illumination&amp;quot; or &amp;quot;error correction for a binary key.&amp;quot; Hence this design uses a fuzzy extractor: it converts the continuous latent vector z into an error-correctable, verifiable bitstring and outputs a stable key K, meeting both identity reproducibility and on-chain requirements.&lt;br /&gt;
We trained a custom I–V encoder in Google Colab (since the RAVE encoder cannot directly handle curve data, we trained a Conv1D architecture). The input is a continuous seven-dimensional &amp;quot;voiceprint&amp;quot; (FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area); the output is a latent vector z whose dimensionality aligns with the downstream audio decoder. Training uses triplet loss (pulling samples from the same cell together and pushing different cells apart) plus prior matching so that z follows the decoder’s Gaussian prior. Measurement noise and illumination drift are addressed via data augmentation (gain scaling, small noise, temporal jitter).&lt;br /&gt;
Because z is continuous and slightly noisy, we apply a further fuzzy extraction: z is first normalized and quantized, then passed through ECC to derive a stable key K, and finally we compute the on-chain commitment keccak256(K || salt). At first registration, we generate a pseudonymous index panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K) for cataloging; thereafter, each report need only reconstruct K&#039; and compute keccak256(K&#039; || salt), and the contract will automatically attribute the record to that panel_id, with no need to upload a human ID.&lt;br /&gt;
The audio decoder is trained independently on musical data (or we simply adopt an existing RAVE decoder); its sole job is to sonify z. Because the encoder enforces stability and geometric relations in z, repeated measurements of the same cell yield reproducible timbre and dynamics. This is a cross-modal mapping (I–V → audio latent): semantic order is maintained only on the encoder side, while the decoder-side mapping is entirely determined by artistic/compositional context (for example mapping to AM/FM, filtering, distortion, spatial parameters, etc.), with the goal being auditory/musical qualities rather than identity verification.&lt;br /&gt;
Overall, RAVE—more precisely, the combination of the I–V encoder and the RAVE decoder—serves as an intermediate layer. On one hand, it establishes a Verifiable Semantic Space (VSP): physical I–V measurements are embedded via contrastive learning into clustered yet separated geometric structures, and the fuzzy extractor yields the key K and the on-chain commitment. According to Jha et al. (2025), semantic stability relies on three core constraints: reconstruction — the transformed representation can be mapped back to its source; cycle-consistency — round-trip transforms preserve meaning; and vector-space preservation (VSP) — pairwise distances among embeddings remain preserved after mapping. On the other hand, it supports aesthetic generation: stable z values produce reproducible sonic styles and narratives. Philosophically, this does not equate the two media; rather, it anchors generation in an oracle, allowing aesthetics to unfold on a foundation of physical verification. Thus, RAVE becomes a &amp;quot;translational membrane&amp;quot;: the inner layer preserves the geometry and commitments of the real (identity and causality), while the outer layer releases perceivable semantics and sound (aesthetics and expression). On-chain handles verification; off-chain handles computation and generation — a clean division of labor that both secures DSSC identity and preserves artistic freedom.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;).  &lt;br /&gt;
The contract functions as a decentralized digital notary, responsible for:&lt;br /&gt;
- Verifying signatures and data integrity (EIP-712)&lt;br /&gt;
- Managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
- Storing and publishing commitments and metadata associated with I–V voiceprints&lt;br /&gt;
&lt;br /&gt;
Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=The sonify oracle as bridge: a minimal cognitive generative system=&lt;br /&gt;
In the Solar Oracle Walkman project, the I–V curve of a patterned DSSC is measured and mapped into a latent state of sound, while a separate fuzzy extractor derives a verifiable key for on-chain proof. Here, the oracle acts like a bridge: it carries a cryptographic statement (e.g., keccak256(K || salt)) from the physical world into a smart contract, linking the imagination of sound with measurable energy trajectories. This allows the work to be understood as a performative experiment: every sonic decision can be traced back to a measurable transformation on the energy curve.&lt;br /&gt;
Following Stinson’s (2020) notion of a generic mechanism, the comparability between AI models and human cognition does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This provides a legitimate license for designs that aim to map generative art and cognitive systems onto one another. The Solar Oracle Walkman can thus be compared to the generative mechanisms of human cognition: reality or correct physical information exists only in the interaction between two worlds—intra-cranial / extra-cranial, on-chain / off-chain.&lt;br /&gt;
Andy Clark’s predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. Reality is not an objective phenomenon, but a prediction generated by the brain—a controllable illusion. This makes the Solar Oracle Walkman into a miniature theater, turning prediction and error into artistic material. Conservatively, it should be seen as an operational sketch of cognition rather than a testable theory of consciousness; it still maintains a distance from formal consciousness science and philosophy of mind.&lt;br /&gt;
Beyond proposing generative systems as a design guideline, the work also explores, under the cover of art, the provocation of inventing new modes of energy trading. Why is the oracle crucial here? Through the oracle and the semiconductor defects of DSSCs, the work can claim: “This sound originates from this solar cell, here and now under these conditions.” Ultimately, it becomes a kind of musical label—a sonified, traceable energy system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson&#039;s &amp;quot;generic mechanism&amp;quot;。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13422</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13422"/>
		<updated>2025-09-05T10:01:05Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* Abstract */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
Solar Oracle Walkman is an exploration of energy trading and sound sculpture, re-engineered from an I–V tester to transform handmade DSSCs (“solar mini discs”) into sound. Each solar mini disc’s TiO₂ layer is patterned with intentional defects via cyanotype or screen printing, producing a unique I–V voiceprint that is submitted through an oracle—a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Once verified, reproducible generative music is played on the Walkman, with the on-chain verdict serving as the gate for playback.The device functions like a cold wallet: each DSSC corresponds to a verifiable on-chain identity (panel_id) and its commitment, where the panel_id can serve as a future anchor for tokenization. In the v1 prototype of this study, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], reduced via PCA, and then manually mapped to the latent input ports of an independently trained nn~ RAVE decoder, achieving reproducible sonic identity without relying on explicit semantic structure.In the next experiment (v2), continuous I–V data under varying illumination will be recorded, and an I–V encoder will be trained to learn compact, illumination-robust latent embeddings of each cell. These embeddings will enter an off-chain fuzzy extractor pipeline (quantization → error correction with helper data (ECC) → hash) to derive a stable key K. On-chain, only the commitment and panel_id derived from K are anchored, preserving privacy while enabling verification. With vector space preservation (VSP), distances in the latent space can reflect differences in photovoltaic behavior, constructing a more complete semantic space.&lt;br /&gt;
Artistically and philosophically, this “oracle machine” links the physical and informational worlds: a perspective that fuses philosophy of perception and blockchain to explore how “reality” can be distilled and realized.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions. The feature definitions (scale-free) are listed below:&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==The 2nd prototype v2: RAVE as mediator and fuzzy extractor=&lt;br /&gt;
PCA is merely linear dimensionality reduction; it cannot guarantee &amp;quot;reproducibility under varying illumination&amp;quot; or &amp;quot;error correction for a binary key.&amp;quot; Hence this design uses a fuzzy extractor: it converts the continuous latent vector z into an error-correctable, verifiable bitstring and outputs a stable key K, meeting both identity reproducibility and on-chain requirements.&lt;br /&gt;
We trained a custom I–V encoder in Google Colab (since the RAVE encoder cannot directly handle curve data, we trained a Conv1D architecture). The input is a continuous seven-dimensional &amp;quot;voiceprint&amp;quot; (FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area); the output is a latent vector z whose dimensionality aligns with the downstream audio decoder. Training uses triplet loss (pulling samples from the same cell together and pushing different cells apart) plus prior matching so that z follows the decoder’s Gaussian prior. Measurement noise and illumination drift are addressed via data augmentation (gain scaling, small noise, temporal jitter).&lt;br /&gt;
Because z is continuous and slightly noisy, we apply a further fuzzy extraction: z is first normalized and quantized, then passed through ECC to derive a stable key K, and finally we compute the on-chain commitment keccak256(K || salt). At first registration, we generate a pseudonymous index panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K) for cataloging; thereafter, each report need only reconstruct K&#039; and compute keccak256(K&#039; || salt), and the contract will automatically attribute the record to that panel_id, with no need to upload a human ID.&lt;br /&gt;
The audio decoder is trained independently on musical data (or we simply adopt an existing RAVE decoder); its sole job is to sonify z. Because the encoder enforces stability and geometric relations in z, repeated measurements of the same cell yield reproducible timbre and dynamics. This is a cross-modal mapping (I–V → audio latent): semantic order is maintained only on the encoder side, while the decoder-side mapping is entirely determined by artistic/compositional context (for example mapping to AM/FM, filtering, distortion, spatial parameters, etc.), with the goal being auditory/musical qualities rather than identity verification.&lt;br /&gt;
Overall, RAVE—more precisely, the combination of the I–V encoder and the RAVE decoder—serves as an intermediate layer. On one hand, it establishes a Verifiable Semantic Space (VSP): physical I–V measurements are embedded via contrastive learning into clustered yet separated geometric structures, and the fuzzy extractor yields the key K and the on-chain commitment. According to Jha et al. (2025), semantic stability relies on three core constraints: reconstruction — the transformed representation can be mapped back to its source; cycle-consistency — round-trip transforms preserve meaning; and vector-space preservation (VSP) — pairwise distances among embeddings remain preserved after mapping. On the other hand, it supports aesthetic generation: stable z values produce reproducible sonic styles and narratives. Philosophically, this does not equate the two media; rather, it anchors generation in an oracle, allowing aesthetics to unfold on a foundation of physical verification. Thus, RAVE becomes a &amp;quot;translational membrane&amp;quot;: the inner layer preserves the geometry and commitments of the real (identity and causality), while the outer layer releases perceivable semantics and sound (aesthetics and expression). On-chain handles verification; off-chain handles computation and generation — a clean division of labor that both secures DSSC identity and preserves artistic freedom.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;).  &lt;br /&gt;
The contract functions as a decentralized digital notary, responsible for:&lt;br /&gt;
- Verifying signatures and data integrity (EIP-712)&lt;br /&gt;
- Managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
- Storing and publishing commitments and metadata associated with I–V voiceprints&lt;br /&gt;
&lt;br /&gt;
Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=The sonify oracle as bridge: a minimal cognitive generative system=&lt;br /&gt;
In the Solar Oracle Walkman project, the I–V curve of a patterned DSSC is measured and mapped into a latent state of sound, while a separate fuzzy extractor derives a verifiable key for on-chain proof. Here, the oracle acts like a bridge: it carries a cryptographic statement (e.g., keccak256(K || salt)) from the physical world into a smart contract, linking the imagination of sound with measurable energy trajectories. This allows the work to be understood as a performative experiment: every sonic decision can be traced back to a measurable transformation on the energy curve.&lt;br /&gt;
Following Stinson’s (2020) notion of a generic mechanism, the comparability between AI models and human cognition does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This provides a legitimate license for designs that aim to map generative art and cognitive systems onto one another. The Solar Oracle Walkman can thus be compared to the generative mechanisms of human cognition: reality or correct physical information exists only in the interaction between two worlds—intra-cranial / extra-cranial, on-chain / off-chain.&lt;br /&gt;
Andy Clark’s predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. Reality is not an objective phenomenon, but a prediction generated by the brain—a controllable illusion. This makes the Solar Oracle Walkman into a miniature theater, turning prediction and error into artistic material. Conservatively, it should be seen as an operational sketch of cognition rather than a testable theory of consciousness; it still maintains a distance from formal consciousness science and philosophy of mind.&lt;br /&gt;
Beyond proposing generative systems as a design guideline, the work also explores, under the cover of art, the provocation of inventing new modes of energy trading. Why is the oracle crucial here? Through the oracle and the semiconductor defects of DSSCs, the work can claim: “This sound originates from this solar cell, here and now under these conditions.” Ultimately, it becomes a kind of musical label—a sonified, traceable energy system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson&#039;s &amp;quot;generic mechanism&amp;quot;。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13421</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13421"/>
		<updated>2025-09-05T10:00:18Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 摘要 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），panel_id可作為未來代幣化的錨點。在本研究的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。在下一個實驗v2裡，預計將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與panel_id，以維護隱私並允許驗證。若能保持向量空間（VSP）的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更完整的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
&lt;br /&gt;
=== 概述 ===&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：&lt;br /&gt;
- 驗證簽名與資料完整性（EIP-712）&lt;br /&gt;
- 以 panel_id 為鍵管理提交&lt;br /&gt;
- 儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料&lt;br /&gt;
&lt;br /&gt;
注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=聲音化的神諭作為橋樑：一個極簡的認知生成系統=&lt;br /&gt;
在太陽能神諭隨身聽計劃中，測量模式化的DSSC的I-V曲線，並將其映射到聲音的潛在狀態中，同時一個單獨的模糊提取器會導出一個可驗證的密鑰，用於鏈上證明。在這裡，神諭就像一座橋樑：它將一個加密聲明（例如，keccak256(K || salt)）從物理世界傳遞到智能合約，將聲音的想像力與可測量的能源軌跡聯繫起來。這使得作品能夠被視為一項表演實驗：每一個聲音決策都可以追溯至能量曲線上的可測變換。遵循Stinson（2020）的通用機制，人工智慧模型與人類認知之間的可比擬性，不在於它們的表徵形式是否相似，而在於它們是否能被視為同屬某種抽象的機制範疇，這為將意圖將生成藝術和認知系統做彼此映射的設計提供了合法執照。我們可以將太陽能神諭隨身聽與人類認知系統中的生成機制相比擬：現實/正確物理資訊只存在於兩個世界─顱內/顱外─鏈上/鏈下之間的交互作用。Andy的預測大腦理論更提出感知與人工智慧都可以被理解為生成機制：它們不只是被動的接收訊號，而是主動進行預測與修正；現實不是客觀現象，而是大腦生成的預測，現實則是可控制的幻象。這使的太陽能神喻隨身聽成為一個微型劇場，使預測與誤差成為藝術材料。保守評估，這是一個認知的執行性工程草圖，而非可測試的意識理論；它與正式的意識科學和心智哲學仍保持著一段距離。此外，除了提出使用生成系統做為設計方針，在藝術的掩護下刺激能源交易的發明；為什麼oracle在此至關重要？藉由oracle和具半導體缺陷的DSSC，讓作品能夠宣稱：「這種聲音源於這片太陽能板，現在，在這些條件下」，最終形成了一個音樂廠牌，聲音化的可追溯能源系統。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson的通用機制圖表。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13420</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13420"/>
		<updated>2025-09-05T09:55:11Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 摘要 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman）是一個能源交易與聲音雕塑的探索，由一個I-V測試儀改造而成，能將手工製作的 DSSC（solar mini disc）轉成聲音。每一片solar mini disc的TiO2 layer經由氰版顯影或網版印刷圖案化製造刻意缺陷，產生獨特的 I–V 聲紋（voiceprint），並透過 oracle（將鏈外資料安全橋接至區塊鏈的機制）提交至智慧合約進行驗證。驗證通過後，即在隨身聽上播放可重現性的生成音樂；鏈上的判定作為播放門檻。本裝置運作如同冷錢包：每片DSSC對應一個可驗證的鏈上身份（panel_id）與其承諾值（commitment），而非代幣本身；內建的I–V測試器則是該身份的讀取器。當前實作尚未鑄造代幣（NFT/SBT），但 panel_id 可作為未來代幣化的錨點。在v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。下一步，我們將記錄在不同光照下的連續I–V數據，並訓練I–V編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入在鏈下進入模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰K；鏈上只錨定由K推導的承諾值（commitment）與 panel_id，以維護隱私並允許驗證。若能保持向量空間的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更好的語意空間。在藝術與哲學意義上，本「占卜機」裝置連結物理世界與信息世界，是一個結合感知哲學與區塊鏈的視角探索「真實」的提煉與實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
&lt;br /&gt;
=== 概述 ===&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：&lt;br /&gt;
- 驗證簽名與資料完整性（EIP-712）&lt;br /&gt;
- 以 panel_id 為鍵管理提交&lt;br /&gt;
- 儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料&lt;br /&gt;
&lt;br /&gt;
注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=聲音化的神諭作為橋樑：一個極簡的認知生成系統=&lt;br /&gt;
在太陽能神諭隨身聽計劃中，測量模式化的DSSC的I-V曲線，並將其映射到聲音的潛在狀態中，同時一個單獨的模糊提取器會導出一個可驗證的密鑰，用於鏈上證明。在這裡，神諭就像一座橋樑：它將一個加密聲明（例如，keccak256(K || salt)）從物理世界傳遞到智能合約，將聲音的想像力與可測量的能源軌跡聯繫起來。這使得作品能夠被視為一項表演實驗：每一個聲音決策都可以追溯至能量曲線上的可測變換。遵循Stinson（2020）的通用機制，人工智慧模型與人類認知之間的可比擬性，不在於它們的表徵形式是否相似，而在於它們是否能被視為同屬某種抽象的機制範疇，這為將意圖將生成藝術和認知系統做彼此映射的設計提供了合法執照。我們可以將太陽能神諭隨身聽與人類認知系統中的生成機制相比擬：現實/正確物理資訊只存在於兩個世界─顱內/顱外─鏈上/鏈下之間的交互作用。Andy的預測大腦理論更提出感知與人工智慧都可以被理解為生成機制：它們不只是被動的接收訊號，而是主動進行預測與修正；現實不是客觀現象，而是大腦生成的預測，現實則是可控制的幻象。這使的太陽能神喻隨身聽成為一個微型劇場，使預測與誤差成為藝術材料。保守評估，這是一個認知的執行性工程草圖，而非可測試的意識理論；它與正式的意識科學和心智哲學仍保持著一段距離。此外，除了提出使用生成系統做為設計方針，在藝術的掩護下刺激能源交易的發明；為什麼oracle在此至關重要？藉由oracle和具半導體缺陷的DSSC，讓作品能夠宣稱：「這種聲音源於這片太陽能板，現在，在這些條件下」，最終形成了一個音樂廠牌，聲音化的可追溯能源系統。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson的通用機制圖表。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13419</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13419"/>
		<updated>2025-09-05T09:34:48Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 摘要 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman） 是一個能源交易與聲音雕塑的探索。外觀參考了復古的Sony WM-F107，而內部裝置則用於測量一片6×6公分手工製作、帶有藝術圖案的 DSSC（染料敏化太陽能電池）的I–V曲線，其TiO₂多孔層透過氰版顯影或網版印刷製成。每一片「solar mini disc」都會產生獨特的I–V聲紋（voiceprint），並透過oracle（將鏈外資料安全橋接至區塊鏈的機制）傳送至智慧合約進行驗證，再轉譯成具可重現性的生成音樂並播放。概念上，這台隨身聽運作如同冷錢包：每片DSSC是一個實體代幣，而內建的I–V測試器則是其讀取器。完成驗證後，隨身聽會播放生成的、語意受限的音樂；鏈上的判定會作為播放的門檻。在目前的v1原型中，量測到的I–V曲線會被分解為七個無量綱特徵 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，再做PCA降維，然後手動映射至另一個獨立訓練的nn~ RAVE解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。下一步，我們將記錄在不同光照下的連續I–V數據，並訓練RAVE編碼器以學習每片電池的緊湊且具抗光照變化性的潛在嵌入。這些嵌入會輸入至模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC）→ 哈希運算），以導出穩定的金鑰。鏈上只會錨定該金鑰的承諾值，以維護隱私並允許驗證。若能保持向量空間的幾何關係，潛在空間中的距離將能反映光伏行為的差異，建立更好的語意空間。在藝術和哲學意義上，本「占卜機」裝置連結物理世界和信息世界，結合感知哲學和區塊鏈角度探索提練「真實」的實現化。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
&lt;br /&gt;
=== 概述 ===&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：&lt;br /&gt;
- 驗證簽名與資料完整性（EIP-712）&lt;br /&gt;
- 以 panel_id 為鍵管理提交&lt;br /&gt;
- 儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料&lt;br /&gt;
&lt;br /&gt;
注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=聲音化的神諭作為橋樑：一個極簡的認知生成系統=&lt;br /&gt;
在太陽能神諭隨身聽計劃中，測量模式化的DSSC的I-V曲線，並將其映射到聲音的潛在狀態中，同時一個單獨的模糊提取器會導出一個可驗證的密鑰，用於鏈上證明。在這裡，神諭就像一座橋樑：它將一個加密聲明（例如，keccak256(K || salt)）從物理世界傳遞到智能合約，將聲音的想像力與可測量的能源軌跡聯繫起來。這使得作品能夠被視為一項表演實驗：每一個聲音決策都可以追溯至能量曲線上的可測變換。遵循Stinson（2020）的通用機制，人工智慧模型與人類認知之間的可比擬性，不在於它們的表徵形式是否相似，而在於它們是否能被視為同屬某種抽象的機制範疇，這為將意圖將生成藝術和認知系統做彼此映射的設計提供了合法執照。我們可以將太陽能神諭隨身聽與人類認知系統中的生成機制相比擬：現實/正確物理資訊只存在於兩個世界─顱內/顱外─鏈上/鏈下之間的交互作用。Andy的預測大腦理論更提出感知與人工智慧都可以被理解為生成機制：它們不只是被動的接收訊號，而是主動進行預測與修正；現實不是客觀現象，而是大腦生成的預測，現實則是可控制的幻象。這使的太陽能神喻隨身聽成為一個微型劇場，使預測與誤差成為藝術材料。保守評估，這是一個認知的執行性工程草圖，而非可測試的意識理論；它與正式的意識科學和心智哲學仍保持著一段距離。此外，除了提出使用生成系統做為設計方針，在藝術的掩護下刺激能源交易的發明；為什麼oracle在此至關重要？藉由oracle和具半導體缺陷的DSSC，讓作品能夠宣稱：「這種聲音源於這片太陽能板，現在，在這些條件下」，最終形成了一個音樂廠牌，聲音化的可追溯能源系統。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson的通用機制圖表。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13418</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13418"/>
		<updated>2025-09-05T09:16:57Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* Abstract */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
The Solar Oracle Walkman is an exploration of energy trading and sound sculpture. Its exterior references the retro Sony WM-F107, while the device measures the I–V curve of a 6 × 6 cm handmade, artistically patterned DSSC whose TiO₂ porous layer is produced by cyanotype or screen printing. Each “solar mini-disc” yields a unique and &amp;quot;defected&amp;quot; I–V voiceprint that is sent—via an oracle, a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Conceptually, the Walkman operates like a cold wallet: each DSSC is a physical token, and the built-in I–V tester is its reader. Upon verification, the Walkman plays generative, semantically constrained music; the on-chain verdict gates playback.&lt;br /&gt;
In the current Max/MSP prototype, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], optionally reduced with PCA, then manually mapped to the latent inlets of an nn~ RAVE decoder, achieving reproducible sonic identity without an explicit semantic structure. Next, we will record continuous I–V data under varied illumination and train a RAVE encoder to learn compact, robust latent embeddings of each cell; these embeddings will feed a fuzzy-extractor pipeline (quantization → error correction with helper data → hash) to derive a stable key. On-chain we anchor only a commitment to that key, preserving privacy while enabling verification. With appropriate vector-space preservation, distances in latent space will reflect differences in photovoltaic behavior, allowing the device to act as a “divinatory machine” that links matter, perception, and imagination.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions. The feature definitions (scale-free) are listed below:&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==The 2nd prototype v2: RAVE as mediator and fuzzy extractor=&lt;br /&gt;
PCA is merely linear dimensionality reduction; it cannot guarantee &amp;quot;reproducibility under varying illumination&amp;quot; or &amp;quot;error correction for a binary key.&amp;quot; Hence this design uses a fuzzy extractor: it converts the continuous latent vector z into an error-correctable, verifiable bitstring and outputs a stable key K, meeting both identity reproducibility and on-chain requirements.&lt;br /&gt;
We trained a custom I–V encoder in Google Colab (since the RAVE encoder cannot directly handle curve data, we trained a Conv1D architecture). The input is a continuous seven-dimensional &amp;quot;voiceprint&amp;quot; (FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area); the output is a latent vector z whose dimensionality aligns with the downstream audio decoder. Training uses triplet loss (pulling samples from the same cell together and pushing different cells apart) plus prior matching so that z follows the decoder’s Gaussian prior. Measurement noise and illumination drift are addressed via data augmentation (gain scaling, small noise, temporal jitter).&lt;br /&gt;
Because z is continuous and slightly noisy, we apply a further fuzzy extraction: z is first normalized and quantized, then passed through ECC to derive a stable key K, and finally we compute the on-chain commitment keccak256(K || salt). At first registration, we generate a pseudonymous index panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K) for cataloging; thereafter, each report need only reconstruct K&#039; and compute keccak256(K&#039; || salt), and the contract will automatically attribute the record to that panel_id, with no need to upload a human ID.&lt;br /&gt;
The audio decoder is trained independently on musical data (or we simply adopt an existing RAVE decoder); its sole job is to sonify z. Because the encoder enforces stability and geometric relations in z, repeated measurements of the same cell yield reproducible timbre and dynamics. This is a cross-modal mapping (I–V → audio latent): semantic order is maintained only on the encoder side, while the decoder-side mapping is entirely determined by artistic/compositional context (for example mapping to AM/FM, filtering, distortion, spatial parameters, etc.), with the goal being auditory/musical qualities rather than identity verification.&lt;br /&gt;
Overall, RAVE—more precisely, the combination of the I–V encoder and the RAVE decoder—serves as an intermediate layer. On one hand, it establishes a Verifiable Semantic Space (VSP): physical I–V measurements are embedded via contrastive learning into clustered yet separated geometric structures, and the fuzzy extractor yields the key K and the on-chain commitment. According to Jha et al. (2025), semantic stability relies on three core constraints: reconstruction — the transformed representation can be mapped back to its source; cycle-consistency — round-trip transforms preserve meaning; and vector-space preservation (VSP) — pairwise distances among embeddings remain preserved after mapping. On the other hand, it supports aesthetic generation: stable z values produce reproducible sonic styles and narratives. Philosophically, this does not equate the two media; rather, it anchors generation in an oracle, allowing aesthetics to unfold on a foundation of physical verification. Thus, RAVE becomes a &amp;quot;translational membrane&amp;quot;: the inner layer preserves the geometry and commitments of the real (identity and causality), while the outer layer releases perceivable semantics and sound (aesthetics and expression). On-chain handles verification; off-chain handles computation and generation — a clean division of labor that both secures DSSC identity and preserves artistic freedom.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;).  &lt;br /&gt;
The contract functions as a decentralized digital notary, responsible for:&lt;br /&gt;
- Verifying signatures and data integrity (EIP-712)&lt;br /&gt;
- Managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
- Storing and publishing commitments and metadata associated with I–V voiceprints&lt;br /&gt;
&lt;br /&gt;
Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=The sonify oracle as bridge: a minimal cognitive generative system=&lt;br /&gt;
In the Solar Oracle Walkman project, the I–V curve of a patterned DSSC is measured and mapped into a latent state of sound, while a separate fuzzy extractor derives a verifiable key for on-chain proof. Here, the oracle acts like a bridge: it carries a cryptographic statement (e.g., keccak256(K || salt)) from the physical world into a smart contract, linking the imagination of sound with measurable energy trajectories. This allows the work to be understood as a performative experiment: every sonic decision can be traced back to a measurable transformation on the energy curve.&lt;br /&gt;
Following Stinson’s (2020) notion of a generic mechanism, the comparability between AI models and human cognition does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This provides a legitimate license for designs that aim to map generative art and cognitive systems onto one another. The Solar Oracle Walkman can thus be compared to the generative mechanisms of human cognition: reality or correct physical information exists only in the interaction between two worlds—intra-cranial / extra-cranial, on-chain / off-chain.&lt;br /&gt;
Andy Clark’s predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. Reality is not an objective phenomenon, but a prediction generated by the brain—a controllable illusion. This makes the Solar Oracle Walkman into a miniature theater, turning prediction and error into artistic material. Conservatively, it should be seen as an operational sketch of cognition rather than a testable theory of consciousness; it still maintains a distance from formal consciousness science and philosophy of mind.&lt;br /&gt;
Beyond proposing generative systems as a design guideline, the work also explores, under the cover of art, the provocation of inventing new modes of energy trading. Why is the oracle crucial here? Through the oracle and the semiconductor defects of DSSCs, the work can claim: “This sound originates from this solar cell, here and now under these conditions.” Ultimately, it becomes a kind of musical label—a sonified, traceable energy system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson&#039;s &amp;quot;generic mechanism&amp;quot;。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13417</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13417"/>
		<updated>2025-09-04T15:39:12Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* Oracle as Bridge in the Solar Oracle Walkman: a Minimal Cognitive Generative System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
The Solar Oracle Walkman is an exploration of energy trading and sound sculpture. Its exterior references the retro Sony WM-F107, while the device measures the I–V curve of a 6 × 6 cm handmade, artistically patterned DSSC whose TiO₂ porous layer is produced by cyanotype or screen printing. Each “solar mini-disc” yields a unique I–V voiceprint that is sent—via an oracle, a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Conceptually, the Walkman operates like a cold wallet: each DSSC is a physical token, and the built-in I–V tester is its reader. Upon verification, the Walkman plays generative, semantically constrained music; the on-chain verdict gates playback.&lt;br /&gt;
In the current Max/MSP prototype, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], optionally reduced with PCA, then manually mapped to the latent inlets of an nn~ RAVE decoder, achieving reproducible sonic identity without an explicit semantic structure. Next, we will record continuous I–V data under varied illumination and train a RAVE encoder to learn compact, robust latent embeddings of each cell; these embeddings will feed a fuzzy-extractor pipeline (quantization → error correction with helper data → hash) to derive a stable key. On-chain we anchor only a commitment to that key, preserving privacy while enabling verification. With appropriate vector-space preservation, distances in latent space will reflect differences in photovoltaic behavior, allowing the device to act as a “divinatory machine” that links matter, perception, and imagination.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions. The feature definitions (scale-free) are listed below:&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==The 2nd prototype v2: RAVE as mediator and fuzzy extractor=&lt;br /&gt;
PCA is merely linear dimensionality reduction; it cannot guarantee &amp;quot;reproducibility under varying illumination&amp;quot; or &amp;quot;error correction for a binary key.&amp;quot; Hence this design uses a fuzzy extractor: it converts the continuous latent vector z into an error-correctable, verifiable bitstring and outputs a stable key K, meeting both identity reproducibility and on-chain requirements.&lt;br /&gt;
We trained a custom I–V encoder in Google Colab (since the RAVE encoder cannot directly handle curve data, we trained a Conv1D architecture). The input is a continuous seven-dimensional &amp;quot;voiceprint&amp;quot; (FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area); the output is a latent vector z whose dimensionality aligns with the downstream audio decoder. Training uses triplet loss (pulling samples from the same cell together and pushing different cells apart) plus prior matching so that z follows the decoder’s Gaussian prior. Measurement noise and illumination drift are addressed via data augmentation (gain scaling, small noise, temporal jitter).&lt;br /&gt;
Because z is continuous and slightly noisy, we apply a further fuzzy extraction: z is first normalized and quantized, then passed through ECC to derive a stable key K, and finally we compute the on-chain commitment keccak256(K || salt). At first registration, we generate a pseudonymous index panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K) for cataloging; thereafter, each report need only reconstruct K&#039; and compute keccak256(K&#039; || salt), and the contract will automatically attribute the record to that panel_id, with no need to upload a human ID.&lt;br /&gt;
The audio decoder is trained independently on musical data (or we simply adopt an existing RAVE decoder); its sole job is to sonify z. Because the encoder enforces stability and geometric relations in z, repeated measurements of the same cell yield reproducible timbre and dynamics. This is a cross-modal mapping (I–V → audio latent): semantic order is maintained only on the encoder side, while the decoder-side mapping is entirely determined by artistic/compositional context (for example mapping to AM/FM, filtering, distortion, spatial parameters, etc.), with the goal being auditory/musical qualities rather than identity verification.&lt;br /&gt;
Overall, RAVE—more precisely, the combination of the I–V encoder and the RAVE decoder—serves as an intermediate layer. On one hand, it establishes a Verifiable Semantic Space (VSP): physical I–V measurements are embedded via contrastive learning into clustered yet separated geometric structures, and the fuzzy extractor yields the key K and the on-chain commitment. According to Jha et al. (2025), semantic stability relies on three core constraints: reconstruction — the transformed representation can be mapped back to its source; cycle-consistency — round-trip transforms preserve meaning; and vector-space preservation (VSP) — pairwise distances among embeddings remain preserved after mapping. On the other hand, it supports aesthetic generation: stable z values produce reproducible sonic styles and narratives. Philosophically, this does not equate the two media; rather, it anchors generation in an oracle, allowing aesthetics to unfold on a foundation of physical verification. Thus, RAVE becomes a &amp;quot;translational membrane&amp;quot;: the inner layer preserves the geometry and commitments of the real (identity and causality), while the outer layer releases perceivable semantics and sound (aesthetics and expression). On-chain handles verification; off-chain handles computation and generation — a clean division of labor that both secures DSSC identity and preserves artistic freedom.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;).  &lt;br /&gt;
The contract functions as a decentralized digital notary, responsible for:&lt;br /&gt;
- Verifying signatures and data integrity (EIP-712)&lt;br /&gt;
- Managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
- Storing and publishing commitments and metadata associated with I–V voiceprints&lt;br /&gt;
&lt;br /&gt;
Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=The sonify oracle as bridge: a minimal cognitive generative system=&lt;br /&gt;
In the Solar Oracle Walkman project, the I–V curve of a patterned DSSC is measured and mapped into a latent state of sound, while a separate fuzzy extractor derives a verifiable key for on-chain proof. Here, the oracle acts like a bridge: it carries a cryptographic statement (e.g., keccak256(K || salt)) from the physical world into a smart contract, linking the imagination of sound with measurable energy trajectories. This allows the work to be understood as a performative experiment: every sonic decision can be traced back to a measurable transformation on the energy curve.&lt;br /&gt;
Following Stinson’s (2020) notion of a generic mechanism, the comparability between AI models and human cognition does not lie in the similarity of their representations, but in whether they can both be regarded as instances of an abstract category of mechanism. This provides a legitimate license for designs that aim to map generative art and cognitive systems onto one another. The Solar Oracle Walkman can thus be compared to the generative mechanisms of human cognition: reality or correct physical information exists only in the interaction between two worlds—intra-cranial / extra-cranial, on-chain / off-chain.&lt;br /&gt;
Andy Clark’s predictive brain theory further suggests that both perception and artificial intelligence can be understood as generative mechanisms: they do not merely receive signals passively, but actively predict and correct them. Reality is not an objective phenomenon, but a prediction generated by the brain—a controllable illusion. This makes the Solar Oracle Walkman into a miniature theater, turning prediction and error into artistic material. Conservatively, it should be seen as an operational sketch of cognition rather than a testable theory of consciousness; it still maintains a distance from formal consciousness science and philosophy of mind.&lt;br /&gt;
Beyond proposing generative systems as a design guideline, the work also explores, under the cover of art, the provocation of inventing new modes of energy trading. Why is the oracle crucial here? Through the oracle and the semiconductor defects of DSSCs, the work can claim: “This sound originates from this solar cell, here and now under these conditions.” Ultimately, it becomes a kind of musical label—a sonified, traceable energy system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson&#039;s &amp;quot;generic mechanism&amp;quot;。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|A compositional strategy: train RAVE on DSSC I–V sequences, so that each new measurement produces a latent embedding z1. Pass z1 through the encoder–decoder loop to obtain a reconstructed embedding z2. Compute the residual vector r = z1 – z2. This residual r precisely represents the part that the model cannot explain. While z1 captures the reproducible voiceprint of the DSSC, r can be interpreted as a “hallucination”: the deviation, noise, or anomaly that the model cannot assimilate. Feeding r into another RAVE decoder allows the hallucination to be sonified.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13416</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13416"/>
		<updated>2025-09-04T15:38:01Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 生成系統中感知進展的聲音化 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman） 是一個能源交易與聲音雕塑的探索。外觀參考了復古的 Sony WM-F107，而內部裝置則用於測量一片 6 × 6 公分手工製作、帶有藝術圖案的 DSSC（染料敏化太陽能電池）的 I–V 曲線，其 TiO₂ 多孔層透過氰版顯影或網版印刷製成。每一片「太陽能迷你碟」都會產生獨特的 I–V 聲紋（voiceprint），並透過 oracle（將鏈外資料安全橋接至區塊鏈的機制）傳送至智慧合約進行驗證。&lt;br /&gt;
概念上，這台隨身聽運作如同冷錢包：每片 DSSC 是一個實體代幣，而內建的 I–V 測試器則是其讀取器。完成驗證後，隨身聽會播放生成的、語意受限的音樂；鏈上的判定會作為播放的門檻。&lt;br /&gt;
在目前的 Max/MSP 原型中，量測到的 I–V 曲線會被分解為七個無量綱特徵 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，可選擇使用 PCA 降維，然後手動映射至 nn~ RAVE 解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。下一步，我們將記錄在不同光照下的連續 I–V 數據，並訓練 RAVE 編碼器以學習每片電池的緊湊且具魯棒性的潛在嵌入。這些嵌入會輸入至模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC） → 雜湊），以導出穩定的金鑰。鏈上只會錨定該金鑰的承諾值，以維護隱私並允許驗證。若能保持向量空間的幾何關係，潛在空間中的距離將能反映光伏行為的差異，使裝置能作為一部「占卜機」，連結物質、感知與想像。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
&lt;br /&gt;
=== 概述 ===&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：&lt;br /&gt;
- 驗證簽名與資料完整性（EIP-712）&lt;br /&gt;
- 以 panel_id 為鍵管理提交&lt;br /&gt;
- 儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料&lt;br /&gt;
&lt;br /&gt;
注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=聲音化的神諭作為橋樑：一個極簡的認知生成系統=&lt;br /&gt;
在太陽能神諭隨身聽計劃中，測量模式化的DSSC的I-V曲線，並將其映射到聲音的潛在狀態中，同時一個單獨的模糊提取器會導出一個可驗證的密鑰，用於鏈上證明。在這裡，神諭就像一座橋樑：它將一個加密聲明（例如，keccak256(K || salt)）從物理世界傳遞到智能合約，將聲音的想像力與可測量的能源軌跡聯繫起來。這使得作品能夠被視為一項表演實驗：每一個聲音決策都可以追溯至能量曲線上的可測變換。遵循Stinson（2020）的通用機制，人工智慧模型與人類認知之間的可比擬性，不在於它們的表徵形式是否相似，而在於它們是否能被視為同屬某種抽象的機制範疇，這為將意圖將生成藝術和認知系統做彼此映射的設計提供了合法執照。我們可以將太陽能神諭隨身聽與人類認知系統中的生成機制相比擬：現實/正確物理資訊只存在於兩個世界─顱內/顱外─鏈上/鏈下之間的交互作用。Andy的預測大腦理論更提出感知與人工智慧都可以被理解為生成機制：它們不只是被動的接收訊號，而是主動進行預測與修正；現實不是客觀現象，而是大腦生成的預測，現實則是可控制的幻象。這使的太陽能神喻隨身聽成為一個微型劇場，使預測與誤差成為藝術材料。保守評估，這是一個認知的執行性工程草圖，而非可測試的意識理論；它與正式的意識科學和心智哲學仍保持著一段距離。此外，除了提出使用生成系統做為設計方針，在藝術的掩護下刺激能源交易的發明；為什麼oracle在此至關重要？藉由oracle和具半導體缺陷的DSSC，讓作品能夠宣稱：「這種聲音源於這片太陽能板，現在，在這些條件下」，最終形成了一個音樂廠牌，聲音化的可追溯能源系統。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson的通用機制圖表。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13415</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13415"/>
		<updated>2025-09-04T15:25:00Z</updated>

		<summary type="html">&lt;p&gt;Abao: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman） 是一個能源交易與聲音雕塑的探索。外觀參考了復古的 Sony WM-F107，而內部裝置則用於測量一片 6 × 6 公分手工製作、帶有藝術圖案的 DSSC（染料敏化太陽能電池）的 I–V 曲線，其 TiO₂ 多孔層透過氰版顯影或網版印刷製成。每一片「太陽能迷你碟」都會產生獨特的 I–V 聲紋（voiceprint），並透過 oracle（將鏈外資料安全橋接至區塊鏈的機制）傳送至智慧合約進行驗證。&lt;br /&gt;
概念上，這台隨身聽運作如同冷錢包：每片 DSSC 是一個實體代幣，而內建的 I–V 測試器則是其讀取器。完成驗證後，隨身聽會播放生成的、語意受限的音樂；鏈上的判定會作為播放的門檻。&lt;br /&gt;
在目前的 Max/MSP 原型中，量測到的 I–V 曲線會被分解為七個無量綱特徵 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，可選擇使用 PCA 降維，然後手動映射至 nn~ RAVE 解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。下一步，我們將記錄在不同光照下的連續 I–V 數據，並訓練 RAVE 編碼器以學習每片電池的緊湊且具魯棒性的潛在嵌入。這些嵌入會輸入至模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC） → 雜湊），以導出穩定的金鑰。鏈上只會錨定該金鑰的承諾值，以維護隱私並允許驗證。若能保持向量空間的幾何關係，潛在空間中的距離將能反映光伏行為的差異，使裝置能作為一部「占卜機」，連結物質、感知與想像。&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
&lt;br /&gt;
=== 概述 ===&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：&lt;br /&gt;
- 驗證簽名與資料完整性（EIP-712）&lt;br /&gt;
- 以 panel_id 為鍵管理提交&lt;br /&gt;
- 儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料&lt;br /&gt;
&lt;br /&gt;
注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=生成系統中感知進展的聲音化=&lt;br /&gt;
在太陽能神諭隨身聽計劃中，測量模式化的DSSC的I-V曲線，並將其映射到聲音的潛在狀態中，同時一個單獨的模糊提取器會導出一個可驗證的密鑰，用於鏈上證明。在這裡，神諭就像一座橋樑：它將一個加密聲明（例如，keccak256(K || salt)）從物理世界傳遞到智能合約，將聲音的想像力與可測量的能源軌跡聯繫起來。這使得作品能夠被視為一項表演實驗：每一個聲音決策都可以追溯至能量曲線上的可測變換。遵循Stinson（2020）的通用機制，人工智慧模型與人類認知之間的可比擬性，不在於它們的表徵形式是否相似，而在於它們是否能被視為同屬某種抽象的機制範疇，這為將意圖將生成藝術和認知系統做彼此映射的設計提供了合法執照。我們可以將太陽能神諭隨身聽與人類認知系統中的生成機制相比擬：現實/正確物理資訊只存在於兩個世界─顱內/顱外─鏈上/鏈下之間的交互作用。Andy的預測大腦理論更提出感知與人工智慧都可以被理解為生成機制：它們不只是被動的接收訊號，而是主動進行預測與修正；現實不是客觀現象，而是大腦生成的預測，現實則是可控制的幻象。這使的太陽能神喻隨身聽成為一個微型劇場，使預測與誤差成為藝術材料。保守評估，這是一個認知的執行性工程草圖，而非可測試的意識理論；它與正式的意識科學和心智哲學仍保持著一段距離。此外，除了提出使用生成系統做為設計方針，在藝術的掩護下刺激能源交易的發明；為什麼oracle在此至關重要？藉由oracle和具半導體缺陷的DSSC，讓作品能夠宣稱：「這種聲音源於這片太陽能板，現在，在這些條件下」，最終形成了一個音樂廠牌，聲音化的可追溯能源系統。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson的通用機制圖表。&lt;br /&gt;
File:controllable hallucinations with RAVE.png|一個編曲策略：使用DSSC I–V序列訓練RAVE，每次新量測會產生一個潛在嵌入z1。將z1經過編碼器–解碼器循環，得到重建嵌入z2。計算殘差向量r = z1 – z2。這個殘差r正好代表模型無法解釋的部分。z1捕捉了DSSC可再現的聲紋，r則可以被假設為「幻覺」：模型無法同化的偏差、噪音或異常。將r輸入到另一個RAVE解碼器就可以將幻覺聲音化：&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=File:Controllable_hallucinations_with_RAVE.png&amp;diff=13414</id>
		<title>File:Controllable hallucinations with RAVE.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=File:Controllable_hallucinations_with_RAVE.png&amp;diff=13414"/>
		<updated>2025-09-04T15:21:43Z</updated>

		<summary type="html">&lt;p&gt;Abao: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13413</id>
		<title>The Solar Oracle Walkman</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=The_Solar_Oracle_Walkman&amp;diff=13413"/>
		<updated>2025-09-04T14:46:31Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* Experiments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[太陽能神喻隨身聽]](chinese version)&lt;br /&gt;
&lt;br /&gt;
=Abstract=&lt;br /&gt;
The Solar Oracle Walkman is an exploration of energy trading and sound sculpture. Its exterior references the retro Sony WM-F107, while the device measures the I–V curve of a 6 × 6 cm handmade, artistically patterned DSSC whose TiO₂ porous layer is produced by cyanotype or screen printing. Each “solar mini-disc” yields a unique I–V voiceprint that is sent—via an oracle, a mechanism for securely bridging off-chain data to the blockchain—to a smart contract for verification. Conceptually, the Walkman operates like a cold wallet: each DSSC is a physical token, and the built-in I–V tester is its reader. Upon verification, the Walkman plays generative, semantically constrained music; the on-chain verdict gates playback.&lt;br /&gt;
In the current Max/MSP prototype, the measured I–V curve is decomposed into seven dimensionless features [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*], optionally reduced with PCA, then manually mapped to the latent inlets of an nn~ RAVE decoder, achieving reproducible sonic identity without an explicit semantic structure. Next, we will record continuous I–V data under varied illumination and train a RAVE encoder to learn compact, robust latent embeddings of each cell; these embeddings will feed a fuzzy-extractor pipeline (quantization → error correction with helper data → hash) to derive a stable key. On-chain we anchor only a commitment to that key, preserving privacy while enabling verification. With appropriate vector-space preservation, distances in latent space will reflect differences in photovoltaic behavior, allowing the device to act as a “divinatory machine” that links matter, perception, and imagination.&lt;br /&gt;
&lt;br /&gt;
=Experiments=&lt;br /&gt;
The solar oracle walkman is mainly made of 3 components: a I-V curve tester, a patterned solar mini disc and a smart contract. The I-V curve of each solar mini disc is measured and uploaded to a smart contract deployed on Sepolia Testnet to be verified, once its I-V data passes the verification, the corresponding music will be generated and allowed to play from the walkman accordingly. The sound of each &amp;quot;solar mini disc&amp;quot; are expected to be reproducible, generative and semantic, like a period of generative music with clear mechanism rather than completely randomness. To make each solar mini disc a generative device, I firstly assume I need to design a hash operation to gain a “ voiceprint (V)” for each solar glass; A hash operation is the process of feeding input data such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly. &lt;br /&gt;
&lt;br /&gt;
==The first prototype v1==&lt;br /&gt;
A DIY I-V curve tester is connected to computer and the 16 points of I-V curve measurements are sent to the Max/MSP via serial communications. I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the &amp;quot;voiceprint&amp;quot; of the panel, especially the DSSC with cyanotyped and screen printded TiO2 layer. In this research, the shape of I-V curve is deconstructed in:to seven features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar mini disc will be resilient even it&#039;s put under different light exposure. The voiceprint V consists seven features of the I-V curve: V = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions. The feature definitions (scale-free) are listed below:&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|DIY DSSC with screen printed pattern and hollyhock dye made by Shih Wei Chieh.&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|DIY DSSC with cyanotype pattern made by Shih Wei Chieh.&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|The measurement of the I-V curve tester is uploaded to Thingspeak and a local server, and can be fetched in Max/MSP.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
===The 7-D voiceprint===&lt;br /&gt;
&amp;lt;code&amp;gt;V = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&amp;lt;/code&amp;gt;&lt;br /&gt;
All features are computed on a 64-point resampled I–V trace and normalized by &amp;lt;code&amp;gt;Voc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Isc&amp;lt;/code&amp;gt; to be invariant to irradiance and device size.&lt;br /&gt;
&lt;br /&gt;
; FF (fill factor)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Vmpp/Voc and Impp/Isc&lt;br /&gt;
: Scale-free ratios capturing the operating point at maximum power.&lt;br /&gt;
&lt;br /&gt;
; Rs* and Rsh* (dimensionless ohmic estimates)&lt;br /&gt;
: First estimate the local slopes on the resampled curve:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs  ≈  -ΔV/ΔI  (evaluated near I ≈ Isc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈  -ΔV/ΔI  (evaluated near V ≈ Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: Then report dimensionless forms:  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rs*  = Rs  * (Isc / Voc)&amp;lt;/code&amp;gt;  &lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Σκ (curvature_sum)&lt;br /&gt;
: Sum of absolute turning angles along the 64-point polyline of the I–V trace: for each consecutive pair of segments &amp;lt;code&amp;gt;s_i = (ΔV_i, ΔI_i)&amp;lt;/code&amp;gt;, accumulate  &lt;br /&gt;
: &amp;lt;code&amp;gt;|angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;, and report &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: (Intuition: larger Σκ indicates a more “bent” I–V shape.)&lt;br /&gt;
&lt;br /&gt;
; A* (normalized area under the I–V curve)&lt;br /&gt;
: Definition: area from V=0 to V=Voc divided by &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;.  &lt;br /&gt;
: Discrete approximation on the resampled trace:  &lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The preprocessing of fuzzy extraction with ml.scale and ml.principle===&lt;br /&gt;
To make the sound of every solar mini disc reproducible and solid for smart contract verification, ml.* library in Max/MSP is a solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The raw seven features are first sent to ml.scale object for the normalization in range from 0 to 1. The values are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the seven values into a new 7-dimensional PCA space which is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|An example Max patch of the machine learning process for the raw seven features: [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area].&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v1 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[Feature Extraction, 7D]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale normalization&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
input RAVE nn~ decoder&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==The 2nd prototype v2: RAVE as mediator and fuzzy extractor=&lt;br /&gt;
PCA is merely linear dimensionality reduction; it cannot guarantee &amp;quot;reproducibility under varying illumination&amp;quot; or &amp;quot;error correction for a binary key.&amp;quot; Hence this design uses a fuzzy extractor: it converts the continuous latent vector z into an error-correctable, verifiable bitstring and outputs a stable key K, meeting both identity reproducibility and on-chain requirements.&lt;br /&gt;
We trained a custom I–V encoder in Google Colab (since the RAVE encoder cannot directly handle curve data, we trained a Conv1D architecture). The input is a continuous seven-dimensional &amp;quot;voiceprint&amp;quot; (FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area); the output is a latent vector z whose dimensionality aligns with the downstream audio decoder. Training uses triplet loss (pulling samples from the same cell together and pushing different cells apart) plus prior matching so that z follows the decoder’s Gaussian prior. Measurement noise and illumination drift are addressed via data augmentation (gain scaling, small noise, temporal jitter).&lt;br /&gt;
Because z is continuous and slightly noisy, we apply a further fuzzy extraction: z is first normalized and quantized, then passed through ECC to derive a stable key K, and finally we compute the on-chain commitment keccak256(K || salt). At first registration, we generate a pseudonymous index panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K) for cataloging; thereafter, each report need only reconstruct K&#039; and compute keccak256(K&#039; || salt), and the contract will automatically attribute the record to that panel_id, with no need to upload a human ID.&lt;br /&gt;
The audio decoder is trained independently on musical data (or we simply adopt an existing RAVE decoder); its sole job is to sonify z. Because the encoder enforces stability and geometric relations in z, repeated measurements of the same cell yield reproducible timbre and dynamics. This is a cross-modal mapping (I–V → audio latent): semantic order is maintained only on the encoder side, while the decoder-side mapping is entirely determined by artistic/compositional context (for example mapping to AM/FM, filtering, distortion, spatial parameters, etc.), with the goal being auditory/musical qualities rather than identity verification.&lt;br /&gt;
Overall, RAVE—more precisely, the combination of the I–V encoder and the RAVE decoder—serves as an intermediate layer. On one hand, it establishes a Verifiable Semantic Space (VSP): physical I–V measurements are embedded via contrastive learning into clustered yet separated geometric structures, and the fuzzy extractor yields the key K and the on-chain commitment. According to Jha et al. (2025), semantic stability relies on three core constraints: reconstruction — the transformed representation can be mapped back to its source; cycle-consistency — round-trip transforms preserve meaning; and vector-space preservation (VSP) — pairwise distances among embeddings remain preserved after mapping. On the other hand, it supports aesthetic generation: stable z values produce reproducible sonic styles and narratives. Philosophically, this does not equate the two media; rather, it anchors generation in an oracle, allowing aesthetics to unfold on a foundation of physical verification. Thus, RAVE becomes a &amp;quot;translational membrane&amp;quot;: the inner layer preserves the geometry and commitments of the real (identity and causality), while the outer layer releases perceivable semantics and sound (aesthetics and expression). On-chain handles verification; off-chain handles computation and generation — a clean division of labor that both secures DSSC identity and preserves artistic freedom.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt;&lt;br /&gt;
File:latent VSP comparison.png|This figure contrasts the current pipeline with an idealized design that incorporates vector space preservation (VSP). On the left, reproducibility is achieved: each DSSC maps to a stable position in latent space, allowing identity verification but without meaningful relationships across cells. On the right, VSP ensures that pairwise distances in the latent space reflect differences in photovoltaic features, providing not only reproducibility but also relational meaning. In this view, the oracle evolves from a gatekeeper that validates authenticity into a “divinatory machine” that reveals how energy curves relate within a shared semantic structure.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Smart Contract Verification System ==&lt;br /&gt;
The smart contract of the Solar Oracle Walkman is deployed on Ethereum [https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e Sepolia Testnet] (contract address: &amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;).  &lt;br /&gt;
The contract functions as a decentralized digital notary, responsible for:&lt;br /&gt;
- Verifying signatures and data integrity (EIP-712)&lt;br /&gt;
- Managing submissions keyed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
- Storing and publishing commitments and metadata associated with I–V voiceprints&lt;br /&gt;
&lt;br /&gt;
Note: Fuzzy extraction and derivation of the key K are all performed off-chain; the contract does not execute FE.&lt;br /&gt;
&lt;br /&gt;
=== Verification Flow (On-chain) ===&lt;br /&gt;
Inputs (submitted from off-chain):&lt;br /&gt;
# &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;: generated off-chain as &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;: computed off-chain as &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Signature: signed according to [[EIP-712]] standard&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# (Optional) 7-dimensional voiceprint &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;, for visualization or research&lt;br /&gt;
&lt;br /&gt;
Contract responsibilities:&lt;br /&gt;
# Verify EIP-712 signature, &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# Manage submissions indexed by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; consistency with existing records (or update by business rules)&lt;br /&gt;
# Store &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;, timestamp, and (optional) 7-D voiceprint; emit events for subscription&lt;br /&gt;
&lt;br /&gt;
=== Panel ID and Identity Management (On-chain Perspective) ===&lt;br /&gt;
# Origin (off-chain): &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# On-chain archiving: measurements are indexed and queried by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# Identity verification: off-chain reconstruction of &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt;, compute &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; and compare with on-chain &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;; contract only accepts the minimal required submission for proof and notarization&lt;br /&gt;
&lt;br /&gt;
=== Security Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 Structured Signatures ====&lt;br /&gt;
The contract implements [[EIP-712]] standard, providing verifiable structured signatures for measurement submissions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Integrity Checks ====&lt;br /&gt;
# Timestamp verification: prevent replay attacks&lt;br /&gt;
# Nonce mechanism: ensure uniqueness of each transaction&lt;br /&gt;
# Voiceprint range check: if 7-D voiceprint is provided, validate feature ranges&lt;br /&gt;
# Commitment consistency: check consistency of &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; for the same &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Measurement Records ====&lt;br /&gt;
Each verified measurement record includes:&lt;br /&gt;
# Panel ID: anonymized identifier of the DSSC (derived off-chain)&lt;br /&gt;
# Commitment: Keccak-256 commitment hash (computed off-chain)&lt;br /&gt;
# Timestamp: measurement time&lt;br /&gt;
# Voiceprint (optional): 7-D I–V voiceprint features&lt;br /&gt;
# Verification Status: verification result&lt;br /&gt;
&lt;br /&gt;
=== Oracle Mechanism (On-chain Role) ===&lt;br /&gt;
The contract acts as one end of a [[Blockchain Oracle]], verifying and notarizing signed data submitted from off-chain:&lt;br /&gt;
# Data verification: signature, timestamp, nonce, and data integrity&lt;br /&gt;
# Identity confirmation: compare &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;&lt;br /&gt;
# State update: update on-chain data structures&lt;br /&gt;
# Event emission: emit events upon successful verification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;700px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:solar oracle walkman smart contract.png|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solar Oracle Walkman v2 — Overview&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Light]&lt;br /&gt;
   ▼&lt;br /&gt;
[Patterned DSSC “Mini-Disc”]&lt;br /&gt;
   ▼&lt;br /&gt;
[Continuous I–V Scanning / ESP32-S3 Tester]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V Encoder (Conv1D trained in Colab) — off-chain]&lt;br /&gt;
Input: 7-D sequence [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&lt;br /&gt;
Output: latent vector z = (z1, z2, …, zn)&lt;br /&gt;
Training: triplet loss + prior matching&lt;br /&gt;
Augmentation: gain scaling / noise / temporal jitter&lt;br /&gt;
   ▼&lt;br /&gt;
[Fuzzy Extractor — off-chain]&lt;br /&gt;
z → normalization / quantization&lt;br /&gt;
  → ECC + helper data → stable key K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
Enrollment: panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
Verification: new K′ → keccak256(K′ || salt) → compare with stored commitment&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / On-chain Path]&lt;br /&gt;
   │                   Package {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   Smart contract: verify EIP-712 signature, timestamp, nonce&lt;br /&gt;
   │                   Smart contract: check keccak256(K′ || salt) == commitment (on verify calls)&lt;br /&gt;
   │                   Smart contract: store panel_id, commitment, metadata; emit events&lt;br /&gt;
   │                   Feedback: OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[input RAVE nn~ decoder]&lt;br /&gt;
   ▼&lt;br /&gt;
Real-time audio output&lt;br /&gt;
Cross-modal mapping: I–V latent → audio latent&lt;br /&gt;
(mapping chosen by artistic / compositional context)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Oracle as Bridge in the Solar Oracle Walkman: a Minimal Cognitive Generative System=&lt;br /&gt;
Perception and machine learning can both be read as generative: they predict first, then correct. In Solar Oracle Walkman, the patterned DSSC’s I–V curve is measured and mapped into a latent state for sound, while a separate fuzzy extractor derives a verifiable key for on-chain proof. Here the oracle is the bridge: it carries a cryptographic claim (e.g., keccak256(K || salt)) from the physical world to the smart contract, keeping sonic imagination tethered to measurable traces.&lt;br /&gt;
Following Stinson’s generic mechanism, we make the in-skull/out-skull loop explicit. Out-skull: light, temperature, material; in-skull: models and priors (RAVE encoder–decoder, human listener), and—conceptually—on-chain verification as institutional memory. The Walkman is staged as a minimal cognitive generative system: a tiny theatre where measurement becomes prediction, error becomes style, and verification becomes composition.&lt;br /&gt;
Notes. RAVE is not the fuzzy extractor. The encoder yields a compact latent z for music; a standard fuzzy extractor (operating on z or the 7-D features) outputs (K, W) for identity stability and on-chain verification.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                  [ GENERIC MECHANISM KIND ]&lt;br /&gt;
    (Grounded inference: sense = abstract = validate = act)&lt;br /&gt;
                              │&lt;br /&gt;
          ──────────────────────────────────────────&lt;br /&gt;
         │                                         │    &lt;br /&gt;
[ COMPUTATIONAL MODEL ]                    [ TARGET SYSTEM ]&lt;br /&gt;
Solar Oracle Walkman                       human cognition&lt;br /&gt;
DSSC I–V measurement                       environment / sensory input&lt;br /&gt;
encoder + latent z_iv                      predictive priors + latent z_brain&lt;br /&gt;
fuzzy extractor -&amp;gt; K                       social/institutional memory&lt;br /&gt;
oracle verify (smart contract)             (report/peer/record)&lt;br /&gt;
         │                                         │ &lt;br /&gt;
          ──────────────────────────────────────────&lt;br /&gt;
                              │&lt;br /&gt;
                       decoder│actions&lt;br /&gt;
                              │&lt;br /&gt;
          [ controlled hallucinations (reality, music) ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why oracle matters here. The oracle lets the piece claim: “this sound arose from this cell, now, under these conditions,” without freezing creativity; it anchors a generative act to evidence. The result is a system that is at once playful and accountable.&lt;br /&gt;
Conservative assessment. This is a performative engineering sketch of cognition, not a testable theory of consciousness; it sits at a respectful distance from formal consciousness science.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
# &#039;&#039;&#039;Where things are now&#039;&#039;&#039; The oracle walkman works as a simple art sculpture that sonifies DSSC I–V curves in real time. The 7-feature voiceprint is stable across illumination changes after normalization. The mapping is deliberately minimal, which makes evaluation of reproducibility straightforward. A controlled pipeline from sensing to sound is established in Max/MSP. Perception and AI are treated as two sides of the same generative mechanism. The working definition of hallucination is generation that drifts beyond admissible evidence and priors. Brains predict and correct; hallucination is an extreme case of prediction mismatch. The oracle provides external anchors to keep generation within verifiable bounds while leaving room for creative variance.&lt;br /&gt;
# &#039;&#039;&#039;What the theory is doing now&#039;&#039;&#039; Stinson’s generic-mechanism view motivates treating DSSC–RAVE and human perception as different instantiations of a common generative architecture. Feigl’s correspondence model motivates explicit bridges from observation to latent variables, so every design step is tied back to measurable traces. These theoretical lenses are not goals in themselves. They function as design guidelines for dataset building, priors for mapping, and evaluation metrics for drift and variance. Current limitations highlight the absence of vector space preservation (VSP). Without VSP, the latent space serves as a stable registry of identities but cannot guarantee relational meaning across cells. Thus, the oracle functions mainly as a gatekeeper that validates authenticity but offers little semantic interpretation. With VSP, however, the oracle could evolve into a “true oracle machine”: not only verifying truth but also revealing how different energy curves relate, translating physical differences into interpretable structures of another domain.&lt;br /&gt;
# &#039;&#039;&#039;Next steps&#039;&#039;&#039; Build a small but clean training set of DSSC voiceprints with controlled illumination and temperature, then test monotonicity and local smoothness priors. Prototype vec2vec-style constraints: simple cycle checks and distance preservation on a held-out set; log when sonic neighborhoods fail to match energy-curve neighborhoods. Investigate lightweight inference targets and compression for future mobile use. Explore whether traceable energy records can be registered as verifiable hashes derived from sonic voiceprint, then evaluate failure modes and anti-counterfeiting limits. In this context, “oracle” refers not only to the blockchain bridge for off-chain data, but also resonates with its ancient meaning—an oracular revelation. When DSSC voiceprints serve only for verification, the oracle acts as a gatekeeper; but once endowed with semantic structure, capable of revealing relations among energy curves and translating them into sound space, it transcends verification and functions as a “machine of divination,” converting physical traces into messages from another world.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
	<entry>
		<id>https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13412</id>
		<title>太陽能神諭隨身聽</title>
		<link rel="alternate" type="text/html" href="https://wiki.sgmk-ssam.ch/index.php?title=%E5%A4%AA%E9%99%BD%E8%83%BD%E7%A5%9E%E8%AB%AD%E9%9A%A8%E8%BA%AB%E8%81%BD&amp;diff=13412"/>
		<updated>2025-09-04T14:43:33Z</updated>

		<summary type="html">&lt;p&gt;Abao: /* 實驗 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:WikiGrenier - Lecteur Sony Mini Disc 03.jpg|Sony MD player Sony MZ-R55.&lt;br /&gt;
File:Sony WM-F107.jpeg|Sony WM-F107 exhibited in Solar Biennale 2025 in Lausanne. &lt;br /&gt;
File:I-V tester made by Marc Dusseiller.jpg|The DIY I-V tester made by Marc Dusseiller. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
= 摘要 =&lt;br /&gt;
太陽能神諭隨身聽（Solar Oracle Walkman） 是一個能源交易與聲音雕塑的探索。外觀參考了復古的 Sony WM-F107，而內部裝置則用於測量一片 6 × 6 公分手工製作、帶有藝術圖案的 DSSC（染料敏化太陽能電池）的 I–V 曲線，其 TiO₂ 多孔層透過氰版顯影或網版印刷製成。每一片「太陽能迷你碟」都會產生獨特的 I–V 聲紋（voiceprint），並透過 oracle（將鏈外資料安全橋接至區塊鏈的機制）傳送至智慧合約進行驗證。&lt;br /&gt;
概念上，這台隨身聽運作如同冷錢包：每片 DSSC 是一個實體代幣，而內建的 I–V 測試器則是其讀取器。完成驗證後，隨身聽會播放生成的、語意受限的音樂；鏈上的判定會作為播放的門檻。&lt;br /&gt;
在目前的 Max/MSP 原型中，量測到的 I–V 曲線會被分解為七個無量綱特徵 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]，可選擇使用 PCA 降維，然後手動映射至 nn~ RAVE 解碼器的潛在輸入口，以達成可重現的聲音身份，而不依賴明確的語意結構。下一步，我們將記錄在不同光照下的連續 I–V 數據，並訓練 RAVE 編碼器以學習每片電池的緊湊且具魯棒性的潛在嵌入。這些嵌入會輸入至模糊提取（fuzzy extractor）流程（量化 → 輔助資料錯誤更正（ECC） → 雜湊），以導出穩定的金鑰。鏈上只會錨定該金鑰的承諾值，以維護隱私並允許驗證。若能保持向量空間的幾何關係，潛在空間中的距離將能反映光伏行為的差異，使裝置能作為一部「占卜機」，連結物質、感知與想像。&lt;br /&gt;
&lt;br /&gt;
=生成系統中感知進展的聲音化=&lt;br /&gt;
感知與人工智慧都可以被理解為生成機制：它們不只是被動接收訊號，而是主動進行預測與修正。在隨身聽中，鏈上的聲紋扮演著錨點──以經驗痕跡來限制生成──而解碼器的表現力則像是召喚，在可驗證的範圍內支撐想像。&lt;br /&gt;
依據 Stinson 的「通用機制觀」以及 Feigl 的「對應模型」，我們設計了從量測（I–V 曲線）到潛在變數（音訊嵌入）的明確橋接。這使得作品能夠被視為一項實驗：每一個聲音決策都可以追溯至能量曲線上的可測變換。&lt;br /&gt;
&amp;lt;gallery widths=400 heights=300&amp;gt;&lt;br /&gt;
File:Stinson&#039;s generic mechanism.png|Stinson的通用機制圖表。&lt;br /&gt;
File:A logical empiricist picture of a scientific theory. Reproduced from Herbert Feigl 1970.png|科學理論的邏輯經驗主義圖表。轉載自 Herbert Feigl 1970。&lt;br /&gt;
File:diagram of solar oracle walkman.png|Stinson 和 Feigl 模型應用於目前專案結構的圖表。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 實驗 =&lt;br /&gt;
太陽能神諭隨身聽主要由三個元件組成：I-V 曲線測試器、經氰版顯影處理或網版印刷圖案化的DSSC、智慧合約。每片迷你碟的 I–V 曲線會被量測並上傳至部署於 Sepolia 測試網 的智慧合約進行驗證。一旦其 I–V 數據通過驗證，相應的音樂就會被生成並允許由隨身聽播放。每片「太陽能迷你碟」的聲音被期望具有可重現性、生成性與語意性——如同一段具備清晰機制的生成音樂，而非完全隨機。為了讓每片太陽能迷你碟成為生成裝置，我首先假設需要設計一個雜湊運算（hash function）來獲得每片太陽能玻璃的「聲紋 (V)」。雜湊運算是將輸入資料（例如數字、文字、檔案，或一組 I–V 曲線參數）送入數學函式或演算法以產生雜湊值的過程。雜湊演算法可以處理任意長度的輸入，但總是輸出固定長度的結果。&lt;br /&gt;
&lt;br /&gt;
==第一個原型 v1==&lt;br /&gt;
一個DIY I–V曲線測試器被連接至電腦，其量測的16個I–V曲線點會透過序列通訊傳送到Max/MSP。I–V曲線通常用來分析太陽能電池的特性，因此在此被視為電池的「聲紋」，尤其是那些帶有氰版與網版印刷TiO₂層的DSSC。在本研究中，I–V曲線的形狀被拆解成七個特徵，並對每個特徵應用機器學習，讓電腦能夠「學會」其形狀。此方法預期能夠保證對光照強度的不變性，使太陽能迷你碟的音訊輸出在不同光照下依舊保持穩定再現。&lt;br /&gt;
&lt;br /&gt;
===7-D Voice print（無量綱化）===&lt;br /&gt;
7D聲紋定義：&amp;lt;code&amp;gt;V = [FF (填充因子), Vmpp/Voc, Impp/Isc, Rs (串聯電阻), Rsh (旁路電阻), 曲率總和, I–V曲線面積]&amp;lt;/code&amp;gt;。注意：這些計算均為 無量綱（dimensionless），所謂無量綱特徵向量，指的是經過正規化後不再帶有物理單位（伏特、安培、歐姆）。例如透過比值Vmpp/Voc或Impp/Isc，這些特徵只捕捉相對形狀或行為，而與絕對大小無關。這在比較或分類不同光照條件下的I–V曲線時至關重要，因為它能確保差異反映的是裝置的內在特性，而不是量測條件的變動。&lt;br /&gt;
&lt;br /&gt;
; FF (填充因子)&lt;br /&gt;
: &amp;lt;code&amp;gt;FF = (Vmpp * Impp) / (Voc * Isc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Vmpp/Voc 與 Impp/Isc&lt;br /&gt;
: 無量綱比值，捕捉最大功率點的操作位置。&lt;br /&gt;
; Rs* 與 Rsh*（無量綱電阻估計）&lt;br /&gt;
: 先估計在重取樣曲線上的局部斜率：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs ≈ -ΔV/ΔI （在 I ≈ Isc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh ≈ -ΔV/ΔI （在 V ≈ Voc 附近）&amp;lt;/code&amp;gt;&lt;br /&gt;
: 再轉換為無量綱形式：&lt;br /&gt;
: &amp;lt;code&amp;gt;Rs* = Rs * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;Rsh* = Rsh * (Isc / Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Σκ (曲率總和)&lt;br /&gt;
: 沿著 64 點重取樣 I–V 折線，累積各段角度變化：&lt;br /&gt;
: &amp;lt;code&amp;gt;Σκ = Σ |angle(s_i, s_{i+1})|&amp;lt;/code&amp;gt;&lt;br /&gt;
: （直覺上：Σκ 越大，曲線「彎曲」程度越明顯）&lt;br /&gt;
; A* (I–V 曲線面積，正規化)&lt;br /&gt;
: 定義：從 V=0 到 V=Voc 的曲線下方面積，除以 &amp;lt;code&amp;gt;(Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: 離散近似：&lt;br /&gt;
: &amp;lt;code&amp;gt;A* ≈ (Σ I[i] * ΔV[i]) / (Isc * Voc)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;220px&amp;quot; heights=&amp;quot;400px&amp;quot;&amp;gt;&lt;br /&gt;
File:DIY DSSC with screen printed pattern.jpg|施惟捷製作的帶有網版印刷圖案和蜀葵染料的 DIY DSSC。&lt;br /&gt;
File:DIY DSSC with cyanotype pattern.jpg|施惟捷製作的帶有藍曬圖案的 DIY DSSC。&lt;br /&gt;
File:I-V tester made by Marc Dusseiller_2.jpg|I-V 曲線測試儀的測量結果被上傳至 Thingspeak 和本機伺服器後並在 Max/MSP 中以fetch指令取得。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
=== ml.scale 與 ml.principle 作為模糊提取的前處理 ===&lt;br /&gt;
為了讓每片太陽能迷你碟的聲音能被智慧合約穩定驗證並重現，Max/MSP 的 ml.* 函式庫是一個解決方案。&lt;br /&gt;
ml.scale：先將七個原始特徵正規化到0到1的範圍。&lt;br /&gt;
ml.principle：再進行 PCA（主成分分析），將七個值轉換至新的7維PCA空間。PCA是一種數學方法，能將數據旋轉並壓縮到較少維度，同時保留最多變異。&lt;br /&gt;
ml.principle 是 Max/MSP 內實作PCA的物件：&lt;br /&gt;
它會從訓練數據中學習主軸&lt;br /&gt;
並將新的數據投影至該降維空間&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:iv_curve_machine_learning.png|機器學習過程針對原始七個特徵的max patch範例：[FF、Vmpp/Voc、Impp/Isc、Rs、Rsh、curvature_sum、area]。&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v1 — 流程圖&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[特徵擷取，7 維]&lt;br /&gt;
F = [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, Σκ, A*]&lt;br /&gt;
   ▼&lt;br /&gt;
ml.scale 正規化&lt;br /&gt;
   ▼&lt;br /&gt;
ml.principle (PCA)&lt;br /&gt;
   ▼&lt;br /&gt;
輸入 RAVE nn~ 解碼器&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 第二個原型v2：RAVE 作為中介層與模糊提取 ==&lt;br /&gt;
在V1版本裡用ml.scale和ml.principle做的PCA僅僅是線性降維；它無法保證「在不同光照下仍能重現」和「二進位金鑰的錯誤更正」，因此我提出v2版本，這裡採用了模糊提取器：它將連續的潛在向量 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 轉換為可糾錯、可驗證的位元列，並輸出一個穩定的金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;，以同時滿足身份可重現性與鏈上需求。&lt;br /&gt;
&lt;br /&gt;
=== I–V 編碼器訓練（鏈下） ===&lt;br /&gt;
# 平台：Google Colab  &lt;br /&gt;
# 架構：Conv1D（因 RAVE 編碼器無法直接處理曲線數據）  &lt;br /&gt;
# 輸入：連續七維「聲紋」 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 輸出：潛在向量 &amp;lt;code&amp;gt;z = (z1, z2, …, zn)&amp;lt;/code&amp;gt;（維度與下游音訊解碼器對齊）  &lt;br /&gt;
# 訓練目標：triplet loss（相同電池樣本拉近，不同電池樣本推遠）+ 先驗匹配（使 z 服從解碼器的高斯先驗）  &lt;br /&gt;
# 數據增強：增益縮放 / 小幅噪音 / 時序抖動  &lt;br /&gt;
&lt;br /&gt;
=== 模糊提取（鏈下） ===&lt;br /&gt;
# &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; → 正規化、量化  &lt;br /&gt;
# 經 ECC（錯誤更正碼） → 導出穩定金鑰 &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 計算承諾值：&amp;lt;code&amp;gt;commit = keccak256(K || salt)&amp;lt;/code&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與註冊 ===&lt;br /&gt;
# 初始註冊：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;  &lt;br /&gt;
# 後續驗證：重建 &amp;lt;code&amp;gt;K′&amp;lt;/code&amp;gt; → 計算 &amp;lt;code&amp;gt;keccak256(K′ || salt)&amp;lt;/code&amp;gt; → 與鏈上 commitment 比對  &lt;br /&gt;
# 特點：合約自動將紀錄歸屬於 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;，無需上傳任何人類身份資訊  &lt;br /&gt;
&lt;br /&gt;
=== 音訊解碼器（鏈下） ===&lt;br /&gt;
# 訓練：獨立於音樂數據，或採用現有的 RAVE 解碼器  &lt;br /&gt;
# 功能：將 &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; 聲音化  &lt;br /&gt;
# 穩定性：由於編碼器強制 z 的幾何結構穩定，相同電池的重複量測能產生可重現的音色與動態  &lt;br /&gt;
# 跨模態映射：&amp;lt;code&amp;gt;I–V → 聲音潛在向量&amp;lt;/code&amp;gt;：語意秩序僅保留在編碼器端，解碼器端映射依藝術／作曲語境決定&lt;br /&gt;
&lt;br /&gt;
=== 可驗證語意空間 (VSP) ===&lt;br /&gt;
根據 Jha 等人 (2025)，語意穩定性依賴三個核心約束：  &lt;br /&gt;
# 重建性：轉換後的表徵能映射回來源  &lt;br /&gt;
# 循環一致性：往返轉換能保持意義  &lt;br /&gt;
# 向量空間保存 (VSP)：嵌入間的成對距離在映射後仍被保存  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=250px&amp;gt; File:latent VSP comparison.png|這張圖將目前流程與包含向量空間保存 (VSP) 的理想化設計進行了比較。左側實現了可重複性：每個 DSSC 都對應到潛在空間中的穩定位置，從而允許身份驗證，但無法在單元之間建立有意義的關係。右側，VSP 確保潛在空間中的成對距離反映了光伏特徵的差異，不僅提供了可重複性，還提供了關係意義。從這個角度來看，預言機從驗證真實性的守門人演變為揭示能量曲線在共享語義結構中如何關聯的「占卜機器」。 &amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 智慧合約驗證系統 ==&lt;br /&gt;
&lt;br /&gt;
=== 概述 ===&lt;br /&gt;
Solar Oracle Walkman 的智慧合約部署於以太坊[https://sepolia.etherscan.io/address/0xeF19a90e5786dd0e89264F38f52CF81102db938e sepolia測試網]（合約地址：&amp;lt;code&amp;gt;0xeF19a90e5786dd0e89264F38f52CF81102db938e&amp;lt;/code&amp;gt;）。合約作為去中心化的數位公證人，負責：&lt;br /&gt;
- 驗證簽名與資料完整性（EIP-712）&lt;br /&gt;
- 以 panel_id 為鍵管理提交&lt;br /&gt;
- 儲存並發佈與 I–V 聲紋關聯的承諾值（commitment）與中繼資料&lt;br /&gt;
&lt;br /&gt;
注意：模糊提取（Fuzzy Extraction）與金鑰 K 的導出均在鏈下完成；本合約不執行 FE。&lt;br /&gt;
&lt;br /&gt;
=== 驗證流程（鏈上） ===&lt;br /&gt;
輸入（由鏈下提交）：&lt;br /&gt;
# code&amp;gt;panel_id&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt; 生成&lt;br /&gt;
# &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;：鏈下以 &amp;lt;code&amp;gt;commitment = keccak256(K || salt)&amp;lt;/code&amp;gt; 計算&lt;br /&gt;
# 簽名：依 [[EIP-712]] 標準對提交資料簽名&lt;br /&gt;
# &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
#（可選）7 維聲紋 &amp;lt;code&amp;gt;[FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, curvature_sum, area]&amp;lt;/code&amp;gt;，用於可視化或研究&lt;br /&gt;
&lt;br /&gt;
合約責任：&lt;br /&gt;
# 驗證 EIP-712 簽名、&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 與 &amp;lt;code&amp;gt;nonce&amp;lt;/code&amp;gt;&lt;br /&gt;
# 以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為索引管理提交，檢查 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 與既有紀錄的一致性（或依業務規則更新）&lt;br /&gt;
# 儲存 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;、時間戳與（可選）7 維聲紋；發佈事件以供訂閱&lt;br /&gt;
&lt;br /&gt;
=== Panel ID 與身份管理（鏈上觀點） ===&lt;br /&gt;
# 來源（鏈下）：&amp;lt;code&amp;gt;panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&amp;lt;/code&amp;gt;&lt;br /&gt;
# 鏈上歸檔：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 為鍵歸檔與查詢測量紀錄&lt;br /&gt;
# 身份驗證：鏈下重建 &amp;lt;code&amp;gt;K&#039;&amp;lt;/code&amp;gt; 後計算 &amp;lt;code&amp;gt;keccak256(K&#039; || salt)&amp;lt;/code&amp;gt; 與鏈上 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 比對；合約僅接受比對結果所需之提交並進行存證&lt;br /&gt;
&lt;br /&gt;
=== 安全機制 ===&lt;br /&gt;
&lt;br /&gt;
==== EIP-712 結構化簽名 ====&lt;br /&gt;
合約實作 [[EIP-712]] 標準，為提交的測量資料提供可驗證的結構化簽名：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;solidity&amp;quot;&amp;gt;&lt;br /&gt;
struct IVMeasurement {&lt;br /&gt;
    uint256 timestamp;&lt;br /&gt;
    bytes32 panelId;&lt;br /&gt;
    bytes32 commitment;&lt;br /&gt;
    uint256[7] voiceprint;&lt;br /&gt;
    bytes32 nonce;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 數據完整性檢查 ====&lt;br /&gt;
# 時間戳驗證：防止重放攻擊&lt;br /&gt;
# Nonce 機制：確保每筆交易唯一性&lt;br /&gt;
# 聲紋範圍檢查：若提供 7 維聲紋則檢查範圍合理性&lt;br /&gt;
# 承諾一致性：對同一 panel_id 的 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt; 進行一致性檢查&lt;br /&gt;
&lt;br /&gt;
=== 儲存結構 ===&lt;br /&gt;
&lt;br /&gt;
==== 測量記錄 ====&lt;br /&gt;
每筆驗證通過的測量記錄包含：&lt;br /&gt;
# Panel ID：DSSC 的匿名化識別碼（鏈下導出）&lt;br /&gt;
# Commitment：Keccak-256 承諾雜湊（鏈下計算）&lt;br /&gt;
# Timestamp：測量時間戳&lt;br /&gt;
# Voiceprint（可選）：7 維 I–V 聲紋特徵&lt;br /&gt;
# Verification Status：驗證狀態&lt;br /&gt;
&lt;br /&gt;
=== 神諭機制（鏈上角色） ===&lt;br /&gt;
合約作為[[區塊鏈神諭]]的一端，對鏈下送來的簽名資料進行鏈上驗證與存證：&lt;br /&gt;
# 數據驗證：簽名、時間戳、nonce 與資料完整性&lt;br /&gt;
# 身份確認：以 &amp;lt;code&amp;gt;panel_id&amp;lt;/code&amp;gt; 比對 &amp;lt;code&amp;gt;commitment&amp;lt;/code&amp;gt;&lt;br /&gt;
# 狀態更新：更新鏈上資料結構&lt;br /&gt;
# 事件觸發：驗證成功後發佈事件&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;太陽能神諭隨身聽 v2 — 概覽&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[光]&lt;br /&gt;
   ▼&lt;br /&gt;
[具圖案的 DSSC「迷你碟」]&lt;br /&gt;
   ▼&lt;br /&gt;
[連續 I–V 掃描 / ESP32-S3 測試器]&lt;br /&gt;
   ▼&lt;br /&gt;
[I–V 編碼器（在 Colab 以 Conv1D 訓練）— 鏈下]&lt;br /&gt;
輸入：7 維序列 [FF, Vmpp/Voc, Impp/Isc, Rs*, Rsh*, 曲率總和, 面積]&lt;br /&gt;
輸出：潛在向量 z = (z1, z2, …, zn)&lt;br /&gt;
訓練：triplet loss + 先驗匹配&lt;br /&gt;
增強：增益縮放 / 噪音 / 時序抖動&lt;br /&gt;
   ▼&lt;br /&gt;
[模糊提取器 — 鏈下]&lt;br /&gt;
z → 正規化 / 量化&lt;br /&gt;
  → ECC + 輔助資料 → 穩定金鑰 K&lt;br /&gt;
  → commit = keccak256(K || salt)&lt;br /&gt;
註冊：panel_id = keccak256(&amp;quot;panel-id&amp;quot; || K)&lt;br /&gt;
驗證：新 K′ → keccak256(K′ || salt) → 與儲存的承諾值比對&lt;br /&gt;
   │&lt;br /&gt;
   ├───────────────► [Oracle / 鏈上路徑]&lt;br /&gt;
   │                   打包 {pubkey, panel_id, commitment, timestamp, nonce, signature}&lt;br /&gt;
   │                   智慧合約：驗證 EIP-712 簽章、時間戳、nonce&lt;br /&gt;
   │                   智慧合約：檢查 keccak256(K′ || salt) == commitment（於 verify 呼叫時）&lt;br /&gt;
   │                   智慧合約：儲存 panel_id、commitment、metadata；發出事件&lt;br /&gt;
   │                   回饋：OK / FAIL&lt;br /&gt;
   │&lt;br /&gt;
   ▼&lt;br /&gt;
[輸入 RAVE nn~ 解碼器]&lt;br /&gt;
   ▼&lt;br /&gt;
即時聲音輸出&lt;br /&gt;
跨模態映射：I–V 潛在向量 → 聲音潛在向量&lt;br /&gt;
（映射依藝術 / 作曲語境決定）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 討論 =&lt;br /&gt;
# &#039;&#039;&#039;目前的狀態&#039;&#039;&#039; 神諭隨身聽作為一件簡單的藝術雕塑，能即時將 DSSC 的 I–V 曲線聲音化。經過正規化後，七個特徵的聲紋在光照變化下依然穩定。映射設計刻意保持極簡，使得可重現性的評估變得直接明瞭。在 Max/MSP 中已經建立了一條從感測到聲音的受控流程。感知與人工智慧被視為同一生成機制的兩個面向。此處「幻覺」的工作定義是：生成過程漂移到可接受證據與先驗之外。大腦會進行預測與修正；幻覺則是預測失配的極端情況。oracle 提供了外部錨點，使生成保持在可驗證的範圍內，同時保留創造性變異的空間。&lt;br /&gt;
# &#039;&#039;&#039;理論目前的作用&#039;&#039;&#039; Stinson 的「通用機制觀」激發我們將 DSSC–RAVE 與人類感知視為同一生成架構的不同實現。Feigl 的「對應模型」則驅動我們設計從觀測到潛在變數的明確橋接，讓每一個設計步驟都能追溯至可測痕跡。這些理論視角本身不是最終目標，而是資料集建立的設計指南映射的先驗假設偏移與變異的評估指標目前的限制在於缺乏向量空間保存 (VSP)；沒有 VSP，潛在空間只能作為身份的穩定註冊，卻無法保證不同電池之間的關聯意義。因此，oracle 主要只是一個驗證真偽的守門人，卻提供不了太多語意解釋。然而，若能引入 VSP，oracle 則可能演化成為一台真正的「神諭機」：不僅能驗證真實，還能揭示不同能量曲線之間的關係，將物理差異轉譯為另一領域中可解釋的結構。&lt;br /&gt;
# &#039;&#039;&#039;下一步&#039;&#039;&#039; 建立一個小而乾淨的 DSSC 聲紋訓練集，控制光照與溫度，並測試單調性與局部平滑性的先驗條件。原型化 vec2vec 式的約束：簡單的循環檢查與距離保持，並在保留測試集中記錄當「聲音鄰域」無法對應「能量曲線鄰域」的情況。研究輕量化推論目標與壓縮方法，以便未來能應用於行動裝置。探索能否將可追溯的能源紀錄註冊為來自聲紋的可驗證雜湊，並評估失效模式與防偽極限。「oracle」不僅指區塊鏈上的鏈外數據橋接機制，也回應了其古代語源——神廟的「神諭」或「占卜」。當 DSSC 聲紋僅用於驗證時，oracle 只是守門人；但當其承載語意結構，能揭示不同能量曲線之間的關聯並轉譯至聲音領域時，它就超越了驗證，開始運作如同一部「占卜機」，將物理世界的跡象轉換為另一個世界的訊息。&lt;br /&gt;
&lt;br /&gt;
= 參考 =&lt;br /&gt;
#Buckner, Cameron J. 2023. From Deep Learning to Rational Machines: What the History of Philosophy Can Teach Us about the Future of Artificial Intelligence. 1st ed. Oxford University PressNew York. https://doi.org/10.1093/oso/9780197653302.001.0001.&lt;br /&gt;
#Stinson, Catherine. 2020. “From Implausible Artificial Neurons to Idealized Cognitive Models: Rebooting Philosophy of Artificial Intelligence.” Philosophy of Science 87 (4): 590–611. https://doi.org/10.1086/709730.&lt;br /&gt;
#Jha, Rishi, Collin Zhang, Vitaly Shmatikov, and John X. Morris. 2025. “Harnessing the Universal Geometry of Embeddings.” arXiv:2505.12540. Preprint, arXiv, June 25. https://doi.org/10.48550/arXiv.2505.12540.&lt;br /&gt;
#https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell&lt;br /&gt;
#https://github.com/shihweichieh2023/IVcurve_tester&lt;br /&gt;
#https://github.com/rjha18/vec2vec&lt;br /&gt;
#https://github.com/shihweichieh2023/solar-oracle-walkman&lt;/div&gt;</summary>
		<author><name>Abao</name></author>
	</entry>
</feed>